diff --git a/backend/api/src/create-comment.ts b/backend/api/src/create-comment.ts index 76443c10f3..1fa5ae301e 100644 --- a/backend/api/src/create-comment.ts +++ b/backend/api/src/create-comment.ts @@ -15,8 +15,9 @@ import { millisToTs } from 'common/supabase/utils' import { convertBet } from 'common/supabase/bets' import { Bet } from 'common/bet' import { runTxn } from 'shared/txn/run-txn' -import { DisplayUser } from 'common/api/user-types' import { broadcastNewComment } from 'shared/websockets/helpers' +import { buildArray } from 'common/util/array' +import { type Contract } from 'common/contract' export const MAX_COMMENT_JSON_LENGTH = 20000 @@ -80,8 +81,6 @@ export const createCommentOnContractInternal = async ( .then(convertBet) : undefined - const bettor = bet && (await getUser(bet.userId)) - const isApi = auth.creds.kind === 'key' const comment = removeUndefinedProps({ @@ -103,7 +102,8 @@ export const createCommentOnContractInternal = async ( answerOutcome: replyToAnswerId, visibility: contract.visibility, - ...denormalizeBet(bet, bettor), + ...denormalizeBet(bet, contract), + isApi, isRepost, } as ContractComment) @@ -137,14 +137,14 @@ export const createCommentOnContractInternal = async ( } if (replyToBetId) return + console.log('finding most recent bet') const bet = await getMostRecentCommentableBet( pg, - contract.id, + buildArray([contract.id, contract.siblingContractId]), creator.id, now, replyToAnswerId ) - const bettor = bet && (await getUser(bet.userId)) const position = await getLargestPosition(pg, contract.id, creator.id) @@ -157,7 +157,7 @@ export const createCommentOnContractInternal = async ( position && contract.mechanism === 'cpmm-1' ? contract.prob : undefined, - ...denormalizeBet(bet, bettor), + ...denormalizeBet(bet, contract), }) await pg.none( `update contract_comments set data = $1 where comment_id = $2`, @@ -175,16 +175,27 @@ export const createCommentOnContractInternal = async ( } const denormalizeBet = ( bet: Bet | undefined, - bettor: DisplayUser | undefined | null + contract: Contract | undefined ) => { return { betAmount: bet?.amount, betOutcome: bet?.outcome, betAnswerId: bet?.answerId, - bettorId: bettor?.id, + bettorId: bet?.userId, betOrderAmount: bet?.orderAmount, betLimitProb: bet?.limitProb, betId: bet?.id, + + betToken: + !bet || !contract + ? undefined + : bet.contractId === contract.id + ? contract.token + : bet.contractId === contract.siblingContractId + ? contract.token === 'MANA' + ? 'CASH' + : 'MANA' + : undefined, } } @@ -204,6 +215,12 @@ export const validateComment = async ( if (you.userDeleted) throw new APIError(403, 'Your account is deleted') if (!contract) throw new APIError(404, 'Contract not found') + if (contract.token !== 'MANA') { + throw new APIError( + 400, + `Can't comment on cash contract. Please do comment on the sibling mana contract ${contract.siblingContractId}` + ) + } const contentJson = content || anythingToRichText({ html, markdown }) @@ -222,7 +239,7 @@ export const validateComment = async ( async function getMostRecentCommentableBet( pg: SupabaseDirectClient, - contractId: string, + contractIds: string[], userId: string, commentCreatedTime: number, answerOutcome?: string @@ -232,7 +249,7 @@ async function getMostRecentCommentableBet( .map( `with prior_user_comments_with_bets as ( select created_time, data->>'betId' as bet_id from contract_comments - where contract_id = $1 and user_id = $2 + where contract_id in ($1:list) and user_id = $2 and created_time < millis_to_ts($3) and data ->> 'betId' is not null and created_time > millis_to_ts($3) - interval $5 @@ -246,7 +263,7 @@ async function getMostRecentCommentableBet( as cutoff ) select * from contract_bets - where contract_id = $1 + where contract_id in ($1:list) and user_id = $2 and ($4 is null or answer_id = $4) and created_time < millis_to_ts($3) @@ -255,7 +272,7 @@ async function getMostRecentCommentableBet( order by created_time desc limit 1 `, - [contractId, userId, commentCreatedTime, answerOutcome, maxAge], + [contractIds, userId, commentCreatedTime, answerOutcome, maxAge], convertBet ) .catch((e) => console.error('Failed to get bet: ' + e)) diff --git a/backend/api/src/get-balance-changes.ts b/backend/api/src/get-balance-changes.ts index 3e77f72b66..93e3781083 100644 --- a/backend/api/src/get-balance-changes.ts +++ b/backend/api/src/get-balance-changes.ts @@ -1,7 +1,6 @@ import { APIHandler } from 'api/helpers/endpoint' import { createSupabaseDirectClient } from 'shared/supabase/init' import { Bet } from 'common/bet' -import { Contract } from 'common/contract' import { orderBy } from 'lodash' import { BetBalanceChange, TxnBalanceChange } from 'common/balance-change' import { Txn } from 'common/txn' @@ -119,24 +118,37 @@ const getBetBalanceChanges = async (after: number, userId: string) => { const pg = createSupabaseDirectClient() const contractToBets: { [contractId: string]: { - bets: Bet[] - contract: Contract + bets: (Bet & { answerText?: string | undefined })[] + contract: BetBalanceChange['contract'] } } = {} await pg.map( - ` - select json_agg(cb.data) as bets, c.data as contract + `select + json_agg(cb.data || jsonb_build_object('answerText', a.text)) as bets, + c.id, + c.question, + c.slug, + c.visibility, + c.data->>'creatorUsername' as creator_username, + c.token from contract_bets cb - join contracts c on cb.contract_id = c.id + join contracts c on cb.contract_id = c.id + left join answers a on a.id = cb.answer_id where cb.updated_time > millis_to_ts($1) and cb.user_id = $2 group by c.id; `, [after, userId], (row) => { - contractToBets[row.contract.id] = { - bets: orderBy(row.bets as Bet[], (bet) => bet.createdTime, 'asc'), - contract: row.contract as Contract, + contractToBets[row.id] = { + bets: orderBy(row.bets, (bet) => bet.createdTime, 'asc'), + contract: { + question: row.question, + slug: row.slug, + visibility: row.visibility, + creatorUsername: row.creator_username, + token: row.token, + }, } } ) @@ -156,11 +168,7 @@ const getBetBalanceChanges = async (after: number, userId: string) => { if (isRedemption && nextBetIsRedemption) continue if (isRedemption && amount === 0) continue - const { question, visibility, creatorUsername, slug } = contract - const text = - contract.mechanism === 'cpmm-multi-1' && bet.answerId - ? contract.answers.find((a) => a.id === bet.answerId)?.text - : undefined + const { question, visibility, creatorUsername, slug, token } = contract const balanceChangeProps = { key: bet.id, bet: { @@ -172,8 +180,12 @@ const getBetBalanceChanges = async (after: number, userId: string) => { slug: visibility === 'public' ? slug : '', visibility, creatorUsername, + token, }, - answer: text && bet.answerId ? { text, id: bet.answerId } : undefined, + answer: + bet.answerText && bet.answerId + ? { text: bet.answerText, id: bet.answerId } + : undefined, } if (bet.limitProb !== undefined && bet.fills) { const fillsInTimeframe = bet.fills.filter( diff --git a/backend/api/src/gidx/complete-checkout-session.ts b/backend/api/src/gidx/complete-checkout-session.ts index 7df1465f08..4f2342e1a1 100644 --- a/backend/api/src/gidx/complete-checkout-session.ts +++ b/backend/api/src/gidx/complete-checkout-session.ts @@ -136,7 +136,7 @@ export const completeCheckoutSession: APIHandler< await sendCoins( userId, paymentAmount, - CompletedPaymentAmount, + CompletedPaymentAmount * 100, MerchantTransactionID, SessionID, user.sweepstakesVerified ?? false diff --git a/backend/api/src/place-bet.ts b/backend/api/src/place-bet.ts index 68d81e9216..abf87bc644 100644 --- a/backend/api/src/place-bet.ts +++ b/backend/api/src/place-bet.ts @@ -11,12 +11,20 @@ import { import { removeUndefinedProps } from 'common/util/object' import { Bet, LimitBet, maker } from 'common/bet' import { floatingEqual } from 'common/util/math' -import { contractColumnsToSelect, log, metrics } from 'shared/utils' +import { contractColumnsToSelect, isProd, log, metrics } from 'shared/utils' import { Answer } from 'common/answer' import { CpmmState, getCpmmProbability } from 'common/calculate-cpmm' import { ValidatedAPIParams } from 'common/api/schema' import { onCreateBets } from 'api/on-create-bet' +<<<<<<< trading-ban import { isAdminId, TWOMBA_ENABLED } from 'common/envs/constants' +======= +import { + BANNED_TRADING_USER_IDS, + isAdminId, + TWOMBA_ENABLED, +} from 'common/envs/constants' +>>>>>>> main import * as crypto from 'crypto' import { formatMoneyWithDecimals } from 'common/util/format' import { @@ -311,8 +319,16 @@ export const fetchContractBetDataAndValidate = async ( 'You must be kyc verified to trade on sweepstakes markets.' ) } +<<<<<<< trading-ban if (user.userDeleted) { throw new APIError(403, 'You are banned or deleted.') +======= + if (isAdminId(user.id) && contract.token === 'CASH' && isProd()) { + throw new APIError(403, 'Admins cannot trade on sweepstakes markets.') + } + if (BANNED_TRADING_USER_IDS.includes(user.id) || user.userDeleted) { + throw new APIError(403, 'You are banned or deleted. And not #blessed.') +>>>>>>> main } log( `Loaded user ${user.username} with id ${user.id} betting on slug ${contract.slug} with contract id: ${contract.id}.` diff --git a/backend/api/src/stripe-endpoints.ts b/backend/api/src/stripe-endpoints.ts index f228f0e92d..03a90eff10 100644 --- a/backend/api/src/stripe-endpoints.ts +++ b/backend/api/src/stripe-endpoints.ts @@ -9,6 +9,7 @@ import { APIError } from 'common/api/utils' import { runTxn } from 'shared/txn/run-txn' import { createSupabaseDirectClient } from 'shared/supabase/init' import { updateUser } from 'shared/supabase/users' +import { TWOMBA_ENABLED } from 'common/envs/constants' export type StripeSession = Stripe.Event.Data.Object & { id: string @@ -54,6 +55,10 @@ const mappedDollarAmounts = { } as { [key: string]: number } export const createcheckoutsession = async (req: Request, res: Response) => { + if (TWOMBA_ENABLED) { + res.status(400).send('Stripe purchases are disabled') + return + } const userId = req.query.userId?.toString() const manticDollarQuantity = req.query.manticDollarQuantity?.toString() diff --git a/backend/scripts/calculate-kyc-bonus-rewards.ts b/backend/scripts/calculate-kyc-bonus-rewards.ts index 35cd4b4d03..32221f8096 100644 --- a/backend/scripts/calculate-kyc-bonus-rewards.ts +++ b/backend/scripts/calculate-kyc-bonus-rewards.ts @@ -2,7 +2,7 @@ import { runScript } from './run-script' import { type SupabaseDirectClient } from 'shared/supabase/init' import { bulkUpsert } from 'shared/supabase/utils' -const TIMESTAMP = '2023-08-26 09:00:00' +const TIMESTAMP = '2024-09-17 09:50:00-07' async function calculateKycBonusRewards(pg: SupabaseDirectClient) { const allBalances = await pg.manyOrNone<{ @@ -10,20 +10,25 @@ async function calculateKycBonusRewards(pg: SupabaseDirectClient) { reward_amount: number }>( `with last_entries as ( - select distinct on (user_id) + select user_id, - investment_value, - balance, - spice_balance, - loan_total, - ts - from user_portfolio_history - where ts <= $1 - order by user_id, ts desc + uph.investment_value, + uph.balance, + uph.spice_balance, + uph.loan_total, + uph.ts + from + users u left join lateral ( + select * from user_portfolio_history + where user_id = u.id + and ts <= $1 + order by ts desc + limit 1 + ) uph on true ) select user_id, - (investment_value + balance + spice_balance - loan_total) / 1000 as reward_amount + (investment_value + balance + spice_balance) / 1000 as reward_amount from last_entries`, [TIMESTAMP] ) diff --git a/backend/scripts/send-sweepcash.ts b/backend/scripts/send-sweepcash.ts new file mode 100644 index 0000000000..fa93ed936f --- /dev/null +++ b/backend/scripts/send-sweepcash.ts @@ -0,0 +1,50 @@ +import { HOUSE_LIQUIDITY_PROVIDER_ID } from 'common/antes' +import { runScript } from 'run-script' +import { runTxn } from 'shared/txn/run-txn' + +// Change these to insert different txns +const groupId = 'additional-kyc-gift' +const amounts = [ + { id: '5LZ4LgYuySdL1huCWe7bti02ghx2', amount: 290.6006599286618 }, // James + { id: 'Rcnau899SsWFEuL0ukY1hMGkath2', amount: 24.300307345553185 }, // Alex Miller + // { id: 'tlmGNz9kjXc2EteizMORes4qvWl2', amount: 1048.4065420277594 }, // SG + { id: 'eBUNDUcrRMYeoRqfFsEcA0UonV33', amount: 0.00941605912381928 }, // jan + { id: 'XtJuqIcTwEa5WnmBtmypEKyjlfu1', amount: 112.2789688018984 }, // Henri Thunberg 🔸 + // { id: 'AJwLWoo3xue32XIiAVrL5SyR1WB2', amount: 32.866559589740005 }, // Ian Philips + { id: 'tNQuBL6vsShm46bi4ciIWxcMTmR2', amount: 21.85886754045586 }, // Dan Wahl + { id: 'zNIw5HrrF9QygZZhTiciun5GEef2', amount: 0.02294625926951672 }, // bob henry + { id: 'd9vxoU9czxR8HkgfMdwwTmVBQ3y2', amount: 0.8558657801231295 }, // Bence +] + +if (require.main === module) { + const message = process.argv[2] + if (!message) { + console.error('Please provide a message as the first argument') + process.exit(1) + } + + runScript(async ({ pg }) => { + await pg.tx(async (tx) => { + for (const { id, amount } of amounts) { + await runTxn(tx, { + fromType: 'USER', + fromId: HOUSE_LIQUIDITY_PROVIDER_ID, + toType: 'USER', + toId: id, + amount, + token: 'CASH', + category: 'MANA_PAYMENT', + data: { + message, + groupId, + visibility: 'public', + }, + description: message, + }) + console.log(`Sent $${amount} in sweepstakes cash to ${id}`) + } + }) + + console.log('complete') + }) +} diff --git a/backend/shared/src/gidx/helpers.ts b/backend/shared/src/gidx/helpers.ts index f5d669f88d..864abcfff4 100644 --- a/backend/shared/src/gidx/helpers.ts +++ b/backend/shared/src/gidx/helpers.ts @@ -18,6 +18,7 @@ import { RegistrationReturnType, timeoutCodes, underageErrorCodes, + uploadedDocsToVerifyIdentity, } from 'common/reason-codes' import { createSupabaseDirectClient } from 'shared/supabase/init' import { intersection } from 'lodash' @@ -254,7 +255,13 @@ export const verifyReasonCodes = async ( FraudConfidenceScore !== undefined && IdentityConfidenceScore !== undefined && (FraudConfidenceScore < IDENTITY_AND_FRAUD_THRESHOLD || - IdentityConfidenceScore < IDENTITY_AND_FRAUD_THRESHOLD) + IdentityConfidenceScore < IDENTITY_AND_FRAUD_THRESHOLD) && + // If they uploaded docs to verify their identity, their ID score is meaningless + !( + uploadedDocsToVerifyIdentity(ReasonCodes) && + FraudConfidenceScore >= IDENTITY_AND_FRAUD_THRESHOLD && + IdentityConfidenceScore === 0 + ) ) { log( 'Registration failed, resulted in low confidence scores:', diff --git a/backend/supabase/contracts.sql b/backend/supabase/contracts.sql index 94daaa121e..f0eb4c3155 100644 --- a/backend/supabase/contracts.sql +++ b/backend/supabase/contracts.sql @@ -231,9 +231,9 @@ drop index if exists description_fts; create index description_fts on public.contracts using gin (description_fts); -drop index if exists market_tier_idx; +drop index if exists market_token_tier_idx; -create index market_tier_idx on public.contracts using btree (tier); +create index market_token_tier_idx on public.contracts using btree (token, tier); drop index if exists question_fts; diff --git a/backend/supabase/kyc_bonus_rewards.sql b/backend/supabase/kyc_bonus_rewards.sql index e5d6a3edbd..f316ec4895 100644 --- a/backend/supabase/kyc_bonus_rewards.sql +++ b/backend/supabase/kyc_bonus_rewards.sql @@ -15,6 +15,13 @@ add constraint kyc_bonus_rewards_user_id_fkey foreign key (user_id) references u -- Row Level Security alter table kyc_bonus_rewards enable row level security; +-- Policies +drop policy if exists "public read" on kyc_bonus_rewards; + +create policy "public read" on kyc_bonus_rewards for +select + using (true); + -- Indexes drop index if exists kyc_bonus_rewards_pkey; diff --git a/common/src/api/schema.ts b/common/src/api/schema.ts index 26fdf2da8f..db383bb68f 100644 --- a/common/src/api/schema.ts +++ b/common/src/api/schema.ts @@ -183,7 +183,7 @@ export const API = (_apiTypeCheck = { props: z .object({ contractId: z.string(), - amount: z.number().gte(1), + amount: z.number().gte(0.01), replyToCommentId: z.string().optional(), limitProb: z.number().gte(0.01).lte(0.99).optional(), expiresAt: z.number().optional(), diff --git a/common/src/comment.ts b/common/src/comment.ts index 1e246e4fdc..b850e44948 100644 --- a/common/src/comment.ts +++ b/common/src/comment.ts @@ -1,6 +1,6 @@ -import type { JSONContent } from '@tiptap/core' -import { Visibility } from './contract' -import { OnLover } from 'common/love/love-comment' +import { type JSONContent } from '@tiptap/core' +import { type OnLover } from 'common/love/love-comment' +import { type ContractToken, type Visibility } from './contract' export const MAX_COMMENT_LENGTH = 10000 @@ -42,7 +42,7 @@ export type OnContract = { answerOutcome?: string // reply to answer.id betId?: string - // denormalized from contract + // denormalized from main contract contractSlug: string contractQuestion: string @@ -50,6 +50,8 @@ export type OnContract = { betAmount?: number betOutcome?: string betAnswerId?: string + // denormalized from the contract you are betting on (may be cash) + betToken?: ContractToken // Used to respond to another user's bet bettorUsername?: string diff --git a/common/src/envs/constants.ts b/common/src/envs/constants.ts index c487ad931f..1035d3702a 100644 --- a/common/src/envs/constants.ts +++ b/common/src/envs/constants.ts @@ -11,9 +11,9 @@ export const CONFIGS: { [env: string]: EnvConfig } = { DEV: DEV_CONFIG, } -export const TWOMBA_ENABLED = false +export const TWOMBA_ENABLED = true export const PRODUCT_MARKET_FIT_ENABLED = false -export const SPICE_PRODUCTION_ENABLED = true +export const SPICE_PRODUCTION_ENABLED = false export const SPICE_TO_MANA_CONVERSION_RATE = 1 export const CASH_TO_MANA_CONVERSION_RATE = 100 export const MIN_CASH_DONATION = 25 @@ -27,6 +27,7 @@ export const SPICE_NAME = 'Prize Point' export const SWEEPIES_NAME = 'Sweepcash' export const SPICE_MARKET_TOOLTIP = `Prize market! Earn ${SPICE_NAME}s on resolution` export const SWEEPIES_MARKET_TOOLTIP = `Sweepstakes market! Win real cash prizes.` +export const CASH_SUFFIX = '--cash' export const TRADE_TERM = 'trade' export const TRADED_TERM = 'traded' diff --git a/common/src/reason-codes.ts b/common/src/reason-codes.ts index c0fed857dc..f3acc396f4 100644 --- a/common/src/reason-codes.ts +++ b/common/src/reason-codes.ts @@ -82,6 +82,11 @@ export const limitTo5kCashoutCodes: string[] = [ 'LL-GEO-US-FL', // Location Florida ] +export const uploadedDocsToVerifyIdentity = (reasonCodes: string[]) => + ['DOC-REV-COMPL', 'ID-FAIL', 'ID-VERIFIED'].every((code) => + reasonCodes.includes(code) + ) + export const documentsReadyCodes: string[] = ['DOC-REV-COMPL', 'DOC-UPLOADED'] export type RegistrationReturnType = { diff --git a/common/src/util/format.ts b/common/src/util/format.ts index 4bdaa93add..ec85e27d4d 100644 --- a/common/src/util/format.ts +++ b/common/src/util/format.ts @@ -72,10 +72,9 @@ export function formatSweepiesNumber( } ) { const { toDecimal, short } = parameters ?? {} - if (short && amount >= 1000) { + if (short) { return formatLargeNumber(amount) } - console.log(amount, parameters) const toDecimalPlace = toDecimal ?? 2 // return amount.toFixed(toDecimal ?? 2) return amount.toLocaleString('en-US', { @@ -247,8 +246,12 @@ export const formatOutcomeLabel = ( | StonkContract | CPMMMultiContract | CPMMNumericContract, - outcomeLabel: 'YES' | 'NO' + outcomeLabel: 'YES' | 'NO', + outcomePseudonym?: string ) => { + if (outcomePseudonym) { + return outcomePseudonym + } if ( contract.outcomeType === 'BINARY' || contract.mechanism === 'cpmm-multi-1' diff --git a/docs/docs/faq.md b/docs/docs/faq.md index 600de18fdb..4332cd6f24 100644 --- a/docs/docs/faq.md +++ b/docs/docs/faq.md @@ -14,7 +14,7 @@ As more people trade on the market, the probability estimate converges to reflec On Manifold, anyone can create their own prediction market about any question they want! We believe prediction markets are not only the best way to forecast difficult questions, but also a fun way to interact with friends, build communities over shared interests, and facilitate the sharing of information. -Manifold is the best prediction markets platform because it offers the widest variety of question topics contributed by a large community. This diversity allows you to leverage your experience across multiple domains to showcase your knowledge and earn more mana from successful trades or unique and engaging questions. +Manifold is the best prediction markets platform because it offers the widest variety of question topics contributed by a large community. This diversity allows you to leverage your experience across multiple domains to showcase your knowledge and earn more mana and sweepcash from successful trades or unique and engaging questions. #### An example @@ -32,7 +32,9 @@ Yes! Manifold has consistently proven its validity and efficacy as a leading pre Beyond our platform, there is substantial evidence that play-money prediction markets provide real forecasting power. Examples include [sports betting](http://www.electronicmarkets.org/fileadmin/user_upload/doc/Issues/Volume_16/Issue_01/V16I1_Statistical_Tests_of_Real-Money_versus_Play-Money_Prediction_Markets.pdf) and internal prediction markets at firms like [Google](https://www.networkworld.com/article/2284098/google-bets-on-value-of-prediction-markets.html). -Traders in a play-money environment are competing for social prestige and a sense of progression that comes from predicting and trading well. Manifold also has prizes available in some regions. +Traders in a play-money environment are competing for social prestige and a sense of progression that comes from predicting and trading well. + +Selected markets also has sweepstakes prizes available in some regions to create further incentives for accurate market pricing. ## Using Manifold @@ -52,11 +54,11 @@ Mana can be used to create, subsidise, and promote markets on your own questions In addition, you can [purchase more mana](https://manifold.markets/add-funds). -### What are prize points +### What is sweepcash? -- When a prize points enabled question or multiple choice answer resolves, you receive prize points if you hold a stake in the correct side. If you sell your stake before the market resolves, you only receive mana. Of course, if you hold to the end but the market resolves against you, you receive nothing. See resolution and payouts sections below for more details. -- You may convert prize points back into mana -- Prize points can be [redeemed for charity donations](#how-can-i-donate-to-charity) at a rate of $0.95 per 1,000 points +- When a Sweepcash enabled question or multiple choice answer resolves, you win sweepcash if you hold a stake in the correct side. If you sell your stake before the market resolves, you will also receive sweepcash, although it won't contribute towards your winnings (ie. you won't be able to withdraw until you've used it to win a market). See resolution and payouts sections below for more details. +- You may convert sweepcash back into mana +- Sweepcash can be withdrawn once you have submitted your bank details. ### How can I earn mana? @@ -73,15 +75,6 @@ There is a daily quest to bet, which gives a reward of M10. For each consecutive You can find all other available quests by navigating to your profile page and clicking on the streak button. - -### How else can I earn prize points? - -- [**Referring friends**](https://manifold.markets/referrals) - - Receive 1,000 Prize Points for each person who signs up when you share a market or group! Make sure they use your share link and place at least one trade after signing up. Click share, DO NOT copy the URL. - -- **Leagues** - - [Manifold Leagues](https://manifold.markets/leagues) are a fun way to compete with people globally who predict at a similar skill/intensity. They are a month long competition with significant rewards, so keep an eye on opportunities to advance in your league! - ### What types of questions can I use Manifold to answer? There are loads of different ways you can use our markets to answer your questions. Most of our users tend to interact with a whole mixture of markets. @@ -218,8 +211,7 @@ Don’t abuse resolving to N/A as it inflicts an opportunity cost on bettors. Fe - Resolution criteria for an outcome have been met. - Creator chooses the correct answer. -- Winners are paid out and loans are taken back. -- If a market has prize points enabled, winnings will be paid in prize points. Otherwise, winners will receive mana. +- Winners are paid out and loans are taken back. ## Market mechanics @@ -319,17 +311,6 @@ Every day at midnight PT, you'd get 4% of your total bet amount back as a loan. ## Misc -### How can I donate to charity - -- First [select a non-profit](https://manifold.markets/charity) from the charity page -- For every 1000 prize points you redeem we will donate $0.95 USD. -- There is no limit to how much you can donate! - -### What kinds of charities can I donate to through Manifold Markets? - -The most popular included charities are GiveWell, Rethink Priorities, Balsa Research, EA Long-Term Future Fund, Grand Teton National Park Foundation, QURI, AI Impacts, Mriya, Doctors Without Borders, EA Animal Welfare Fund, EWG, GiveDirectly, and many more. Contact charity@manifold.markets if there is a charity not included that you would like to donate to! -Read more here: [Charity page](https://manifold.markets/charity); - ### How can I turn off emails and other notifications? You can fully [customise all your notifications](https://manifold.markets/notifications?tab=settings§ion=). @@ -387,4 +368,4 @@ Manifold Markets believes users should have autonomy over their own markets as m ### Can you play Manifold Markets for free? -Yes, Manifold is a free to play social prediction game with prizes enabled in select regions. Outside of permitted regions, you are unable to redeem your Prize Points for prizes. Prize Points can always be exchanged back to mana to continue playing. +Yes, Manifold is a free to play social prediction game. Users may choose to participate in either mana markets or, region-permitting, sweepcash markets for free. Users may choose to buy additional mana, although it is not necessary. diff --git a/docs/docs/index.md b/docs/docs/index.md index bbdc6e54a4..411eda7e0e 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -4,8 +4,10 @@ slug: / # Manifold Docs -[Manifold](https://manifold.markets/) is a play-money prediction market platform where you can bet on anything. +[Manifold](https://manifold.markets/) is a social prediction market platform where you can trade on anything. This site hosts Manifold's: + - [API documentation](/api) -- [FAQ](/faq) \ No newline at end of file +- [FAQ](/faq) +- [Sweepstakes FAQ](/sweepstakes) diff --git a/docs/docs/privacy-policy.md b/docs/docs/privacy-policy.md new file mode 100644 index 0000000000..886f85dfa4 --- /dev/null +++ b/docs/docs/privacy-policy.md @@ -0,0 +1,145 @@ +# Privacy Policy + +Manaplay LLC (“Manifold” or “we”, “our” or “us”) operates the Manifold Markets Sweepstakes platform, which includes portions of the Manifold Markets app and website, and all related social media pages (the foregoing, and all content, features, and materials thereon, shall hereinafter be collectively referred to as the “Platform”). + +We believe that the privacy and security of your information and data (“Information”) is very important. This Privacy Policy (“Policy”) explains the types of Information we collect from users of the Platform, how that Information is used, how the Information may be shared with other parties, and what controls our users have regarding their Information. We encourage you to read this Policy carefully. + +‍ + +Any updates or modifications to this Policy will be posted on manifold.markets.  By using or accessing the Platform, you signify that you have read, understand and agree to be bound by this Policy. This Policy is effective as of September 16th, 2024. + +INFORMATION WE COLLECT AND HOW WE USE IT + +Types of Information: + +We may collect the following types of Information through our Platform: + +“Personal Data” such as your name, e-mail address, physical address, phone number, specific (e.g., street level) geolocation data and other information that can be used to directly identify you; + +“Device Information” which is information relating to the device you are using when you access our Platform, such as your device’s IP address, your device identifiers (including Apple IDFA or an Android Advertising ID), the type of browser and operating system you are using, the identity of your internet service provider, and your device and browser settings. + +“Usage Data” which is data related to your use of the Platform such as the pages you visit, your actions within the Platform, the type of content you have accessed, seen, forwarded and/or clicked on, WiFi connections, general geolocation information, date and time stamps, log files, and diagnostic, crash, and performance logs and reports. + +“Biometric Data,” which is data comprised of user-provided photos or facial skins/selfies. + +PERSONAL DATA + +In order to access the contests available on our Platform, you are required to register an account and this process will require you to give us personal data (the “Personal Data”). + +We use the Personal Data that we collect to provide you with the applicable services, features or functionality associated with your submission and also to respond to your requests, communicate with you regarding the Platform, send you promotional e-mails, guard against potential fraud, and comply with laws and regulations. When you submit Personal Data through the Platform, whether by directly providing it to us upon request or voluntarily disclosing it through comments, you are giving your consent to the collection, use and disclosure of your Personal Data as set forth in this Privacy Policy. + +BIOMETRIC DATA + +Biometric Data may be processed by third parties to help prevent fraud, comply with laws and regulations, and prevent underage activity on the Platform. + +DEVICE INFORMATION & USAGE DATA + +Whether or not you submit Personal Data or Biometric Data, any time you visit the Platform, We or third parties may collect, store or accumulate certain Device Information and Usage Data. This Information may be used in furtherance of the purposes described above with respect to Personal Data and also in aggregate form for general administrative, compliance, and security purposes. + +INFORMATION TO AND FROM SOCIAL NETWORKS + +If you choose to connect to our Platform through a third-party social network such as Facebook, Twitter or Instagram (each, a “Social Network”) or others, we may collect Personal Data from your profile on such Social Network, such as your name, username, and e-mail address or other data, and we will use that Personal Data for the purposes set forth herein. In addition, our Platform may offer social sharing features which will allow you to “Share” or “Like” on a Social Network. If you decide to use such features, it may allow the sharing and collection of Information both to and from such Social Network so you should check the privacy policy of each Social Network before using such features. + +SHARING OF INFORMATION + +In no event will we disclose, rent, sell or share any of your Personal Data to third parties for direct marketing purposes. + +‍ + +We may share your Information in the following instances: + +(i) In response to subpoenas, court orders, or other legal process; to establish or exercise our legal rights; to defend against legal claims; or as otherwise required by law. In such cases we reserve the right to raise or waive any legal objection or right available to us; + +(ii) When we believe it is appropriate to investigate, prevent, or take action regarding illegal or suspected illegal activities; to protect and defend the rights, property, or safety of our company, our users, or others; and in connection with the enforcement of our Terms of Use and other agreements; + +(iii) In connection with a corporate transaction, such as a divestiture, merger, consolidation, or asset sale, or in the unlikely event of bankruptcy; or + +(iv) We may integrate third-party service providers within our Platform to assist with the processing of Personal Data, Usage Data, and Biometric Data for compliance purposes. These providers are contractually obligated to adhere to strict data protection standards and are prohibited from using the data for any purpose other than the provision of services to us. + +CHAT PRIVACY POLICY + +Our Platform includes a Chat Feature (as that term is defined in the Terms of Use) that allows users to communicate with each other in real-time. Any messages, content, or information you share through the Chat Feature will be processed and stored by us and our service providers to provide the chat functionality, maintain appropriate records, and help prevent fraud or market manipulation. + +Any messages, content, data, or other materials ("Chat Materials") that you upload, submit, or send through the chat feature will be owned exclusively by you, the user. However, by uploading, submitting or sending Chat Materials, you grant us a worldwide, non-exclusive, royalty-free, sub-licensable, and transferable license to host, store, use, display, reproduce, modify, adapt, edit, publish and distribute those Chat Materials solely for the purposes of operating, providing, and improving the chat feature and our services. + +You represent and warrant that you own or have the necessary rights and permissions to use and authorize us to use any third-party Chat Materials as described in these terms. You will be solely responsible for any and all liability that may result from the Chat Materials that you submit or send. You acknowledge that sharing images, files or other content without the appropriate rights or licenses may violate third-party rights. You agree that we have no responsibility or liability for any claims relating to Chat Materials that you provide. + +The chat feature must not be used to share, upload, or send any images, files or other content in a manner that infringes any copyrights, trademarks, rights of publicity, privacy rights, confidentiality obligations or other third-party intellectual property or proprietary rights. Doing so may result in termination or suspension of your access to the Chat Feature. + +We reserve the right to remove or disable access to any Chat Materials, in whole or in part, that we believe violates these terms or applicable laws. + +We may collect and store the following data related to your use of the chat feature: + +Chat messages and attachments you send or receive; + +Date, time, and metadata associated with your chat messages; + +User identifiers and profile information of chat participants. + +Chat data and Chat Materials will be retained in accordance with our data retention policies and legal obligations. We may access, review, and disclose chat data as necessary to comply with legal requirements, enforce our terms of service, maintain site integrity and safety, or for other lawful purposes. + +Please note that Chat Materials are not encrypted end-to-end, and system administrators and service providers involved in delivering the chat service may have the ability to access chat content as required to operate and troubleshoot the systems. + +You should avoid sharing sensitive or confidential information through the Chat Feature that you do not want to be accessed or disclosed in this manner. + +‍ + +AUTOMATED DATA COLLECTION / COOKIES + +We may use certain automatic analytics and tracking technologies to assist us in performing a variety of functions, including storing your Information, collecting Device Information and Usage Data, understanding your use of the Platform, customizing the content offered to you on the Platform and delivering relevant advertising to you. Such technologies include: + +Cookies. Cookies are text files placed in your computer’s browser to store your preferences. We use cookies or other tracking technologies to understand site and Internet usage and to improve or customize the Platform and the content, offerings, or advertisements you see on the Platform. For example, we may use cookies to personalize your experience on the Platform (e.g., to recognize you by name when you return to the Platform), save your password in password-protected areas, and facilitate subscriptions or orders on the Platform. Most web browsers automatically accept cookies, but you can usually configure your browser to prevent this. However, not accepting cookies may make certain features of the Platform unavailable to you. + +Web Beacons. We may also use “web beacons” or clear GIFs, or similar technologies, which are small pieces of code placed on a web page or in an email, to monitor the behavior and collect data about the visitors viewing a web page or email. For example, web beacons may be used to count the users who visit a web page or to deliver a cookie to the browser of a visitor viewing that page. Web beacons may also be used to provide information on the effectiveness of our email campaigns (e.g., open rates, clicks, forwards, etc.). + +Mobile Device Identifiers and SDKs. We also sometimes use, or partner with publishers or app developer platforms that use, mobile Software Development Kits (“SDKs”) that are incorporated into the Platform to collect Information, such as mobile identifiers (e.g., IDFAs and Android Advertising IDs), geolocation information, and other information about your device or use of the Platform. A mobile SDK may act as the mobile version of a web beacon (see “Web Beacons” above) and we may use this technology to deliver or help our advertising partners deliver certain advertising through the Platform based on information associated with your mobile device. + +By visiting the Platform you acknowledge, and agree that you are giving us your consent to track your activities and your use of the Platform through the technologies described above, as well as similar technologies developed in the future, and that we may use such tracking technologies in the emails we send to you. + +PERSONAL DATA RETENTION + +We retain the Personal Data we receive as described in this Privacy Policy for as long as you use the Platform or as necessary to fulfill the purpose(s) for which it was collected, resolve disputes, establish legal defenses, conduct audits, pursue legitimate business purposes, enforce our agreements, and comply with applicable laws. For purposes of clarity, Personal Data may also include any Biometric Data collected by third parties Platform for purposes outlined herein. + +PRIVACY AND SECURITY + +It is entirely your choice whether or not you provide the Submitted Data to us. We take reasonable precautions to protect our customers’ Submitted Data against loss, misuse, unauthorized disclosure, alteration, and destruction. However, please remember that no transmission of data over the Internet or any wireless network can be guaranteed to be 100% secure. As a result, while we strive to protect your Submitted Data, we cannot ensure or warrant the security of any Information that you transmit to us or from us, and you do so at your own risk. You hereby acknowledge that we are not responsible for any intercepted information sent via the Internet, and you hereby release us from any and all claims arising out of or related to the use of intercepted information in any unauthorized manner. If you believe your Submitted Data is being improperly used by us or any third party, please immediately notify us via email at help@manifold.markets. + +MINORS UNDER 18 + +The Manifold Sweepstakes Platform is intended for and targeted to adults. We do not permit anyone under the age of 18 to participate on the Platform nor do we knowingly collect or solicit Personal Data directly from anyone under the age of 18. If you are under 18, please do not send any Personal Data about yourself to us, including your name, address, telephone number, or email address. In the event that we learn that we have collected Personal Data from a child under age 18, we will delete that information as quickly as possible. If you are a parent or guardian of a child under 18 years of age and you believe your child has provided us with Personal Data, please contact us at help@manifold.markets. + +TARGETED ADVERTISING + +We engage certain third-party service providers to serve advertisements on our behalf across the Internet and to provide analytics services. We may also participate in affiliate advertising and allow affiliate links to be encoded on some of our pages. This means that we may earn a commission when you click on or make purchases via affiliate links. + +‍ + +Our advertisers or ad networks that serve advertisements may utilize Cookies or other similar technologies (including within the ads) to collect anonymous information from you such as your device identifiers, advertising IDs, and IP address, web browser, actions you take relating to the ads, any links you click on, and conversion information. This information may be used by us, our service providers and their clients in aggregated, anonymous form to, among other things, analyze and track aggregated data, determine the popularity of certain content or products, measure the effectiveness of ad campaigns, determine the proper amount of repeat views of a given ad, and deliver advertising and content targeted to your interests on our Platform and outside of our Platform on other websites (also known as “interest-based advertising”). These service providers are prohibited from collecting any Personal Data from you and we do not share any of your Personal Data with them. + +OPTING OUT OF COMMUNICATIONS + +As described above, we may use the Personal Data we collect from you to send you newsletters, push notifications, general communications and promotional e-mails, including promotional communications about our Platform and our or our partners’ products or services. If you do not want to receive such communications, you can opt out (as applicable) by using the unsubscribe link at the bottom of our communications, unchecking the applicable box to opt out when prompted, or by simply not opting in when prompted. You may also at any time opt out of receiving communications from us by sending an e-mail to help@manifold.markets with the subject line “Opt Out. + +Please note that even if you unsubscribe from our communications, we may still need to contact you with important information related to your account and your purchases. For example, even if you have unsubscribed from our promotional emails, we will still send you emails to alert you to changes to our Terms of Use or Privacy Policy. + +DISALLOWING COOKIES AND LOCATION DATA COLLECTION + +You can opt out of the collection and use of certain information, which we collect about you by automated means, by changing the settings in the device you use to access the Platform. In addition, your browser may tell you how to be notified and opt out of receiving certain types of cookies. Please note, however, that without cookies you may not be able to use all of the features of the Platform. + +‍ + +When you access the Platform through a mobile device, you may be asked to share your precise (GPS level) geo-location information with us so we can ensure geolocation compliance. + +CHANGES TO THIS PRIVACY POLICY + +We reserve the right to change this Policy at any time. In the event we make changes to this Policy, such a policy will be re-posted in the “Privacy” section of our Platform with the date such modifications were made indicated on the top of the page. Therefore, please review this Policy from time to time so that you are aware when any changes are made to this Policy. + +YOUR AGREEMENTS + +You represent and warrant that any Personal Data you provide us is true and correct and relates to you and not to any other person. + +If you use the Platform, you are responsible for maintaining the confidentiality of your account and for restricting access to your computer or device, and you agree to accept responsibility for all activities that occur under your account. + +GENERAL + +If you have questions or comments about this Policy, please contact us at help@manifold.markets with “Privacy” in the subject line of your email. diff --git a/docs/docs/rules.md b/docs/docs/rules.md new file mode 100644 index 0000000000..5a10d8f4bf --- /dev/null +++ b/docs/docs/rules.md @@ -0,0 +1,263 @@ +# Sweepstakes Prediction Game Rules + +The Sponsor/Promoter of the Sweepstakes is Manaplay LLC.– 425 Divisadero St STE 300, San Francisco 94117. All Sweepstakes Games are administered by Manaplay LLC (“Manifold” or “Manaplay”). + +APPLE AND GOOGLE OR ANY OTHER THIRD PARTY ARE NOT SPONSORS OF, RESPONSIBLE FOR CONDUCTING, OR INVOLVED WITH THE SWEEPSTAKES IN ANY MANNER. + +NO PURCHASE OR PAYMENT NECESSARY TO ENTER OR WIN. A PURCHASE OR PAYMENT OF ANY KIND WILL NOT INCREASE A PARTICIPANT’S CHANCES OF WINNING. VOID WHERE PROHIBITED. + +Manifold may award sweepstakes entries referred to as “Sweepcash” according to the rules set out in these Sweepstakes Rules. Sweepcash can be used to participate in sweepstakes prediction games for a chance to amass eligible Sweepcash that can be redeemed for cash and prizes subject to the terms of these Rules. + +PARTICIPANTS IN ANY OF MANIFOLD’S SWEEPSTAKES PREDICTION GAMES MUST CREATE AND MAINTAIN AN ACCOUNT WITH MANIFOLD AND ACCEPT THE Terms and Conditions, WHICH REFERENCE, INCORPORATE, AND APPLY TO THESE RULES. THESE SWEEPSTAKES RULES GOVERN THE SWEEPSTAKES PREDICTION GAMES OFFERED BY MANIFOLD AND ARE CONSIDERED TO BE PART OF THE Terms and Conditions. + +‍ + +1. ELIGIBILITY TO PARTICIPATE + +1.1. Manifold Sweepstakes Prediction Games (the “Sweepstakes”) is open only to legal residents located in the states of the United States (excluding Delaware, Idaho, Michigan, and Washington), who are at least eighteen (18) years old or the legal age to participate in sweepstakes games in their jurisdiction at the time of entry. Additional rules regarding eligibility apply (e.g. see Section 1.3).  Participation is void where prohibited by law, please refer to the Terms and Conditions for more information. + +1.2. A person who enters into or otherwise participates in the Sweepstakes is a “Participant.” + +1.3. The Sweepstakes is subject to all applicable federal, state, provincial, territorial and local laws and regulations. It is the sole responsibility of a Participant to determine whether the Sweepstakes is legal and compliant with all regulations in the jurisdiction in which the Participant resides. + +1.4. Participation constitutes the Participant’s full and unconditional agreement to these Sweepstakes Rules and Manifold's decisions, which are final and binding in all matters related to the Sweepstakes. + +1.5. Winning a prize is contingent upon fulfilling all requirements set out in these Sweepstakes Rules. + +1.6. Current Employees of Manaplay LLC ., any of its affiliates, subsidiaries, holding companies, advertising agencies, or any other company or individual who has direct control or involvement with the design, production, execution, settlement, or distribution of the Sweepstakes prediction games are not eligible to participate.  Please refer to the Terms and Conditions for further information about other Manifold product offering eligibility. + +1.7. The Sweepstakes is open to Participants who do not have access to material, confidential, information that might impact the outcome of a Sweepstakes Prediction game. If a Participant is, in Manifold’s best judgment determined to have access to material, confidential, non-public information, or is using systematic methods to manipulate the Sweepstakes to obtain prizes, Manifold reserves the right to limit entries or exclude the Participant from the Sweepstakes. + +1.8. Sweepstakes Period. The Sweepstakes periods for individual prediction games will be clearly stated on Manifold. + +2. HOW TO COLLECT Sweepcash + +2.1. A Participant must create and maintain a current account with Manifold. Creation of an Account is free and no purchase is ever required. You may create an Account free of charge by downloading Manifold App in the Apple App Store and Google Play store, or via manifold.markets. To enter the Sweepstakes, a Participant must access Manifold through the application or via manifold.markets and sign in. + +2.2. There are four potential ways to collect Sweepcash to use in the Sweepstakes: + +(a) Receive Sweepcash for free as an occasional bonus issued at the sole discretion of Manifold.  No purchase is required. + +(b) Receive Sweepcash for free as a bonus when purchasing Mana. Each Participant shall automatically receive Sweepcash as a free bonus in connection with the purchase of Mana if a bonus is applicable to that purchase as indicated on the Platform. If a bonus is applicable it will be clearly displayed at the time of the purchase. + +(c) Free Mail-In Entry Method - No more than ten times per calendar year, Participants may Receive Free Sweepcash by sending a request by Mail. Participants in the United States (other than the states listed in section 1.1) can receive Sweepcash by sending a stamped #10 envelope enclosing one (1) 3” x 5” hand-written Request Card to the following address: + +Manaplay LLC . + +Manifold Sweepstakes DEPARTMENT + +P.O BOX 170247 + +San Francisco, CA 94117 + +Participants must adhere to the following process to receive Sweepcash by post: + +1. Handwrite Participant’s return address on the front of the envelope and the words: “Manifold Sweepstakes Credits”; and + +2. Handwrite all of the following on only one side of the Request Card inserted inside the envelope in the following order: + +(a) Participant’s full name as shown on their government issued identification; + +(b) The email address registered to Participant’s Player Account; + +(c) The username associated with Participant’s Player Account; + +(d) The return/residential address registered to Participant’s Player Account; and + +(e) The following statement: + +“I wish to receive Sweepcash to participate in the sweepstakes promotions offered by Manifold. By submitting this request, I declare that I have read, understood, and agree to be bound by Manifold’s Terms and Conditions and Sweepstakes Rules.” + +3. There is a limit of one request per outer envelope. + +4. For each request a Participant submits, the Participant will at this time receive 1 Sweepcash credit THE MAXIMUM NUMBER OF REQUESTS PER PARTICIPANT SHALL BE 10 MAIL IN REQUESTS PER CALENDAR YEAR– ALL REQUESTS IN EXCESS OF 10 PER SWEEPSTAKES PERIOD SHALL BE DEEMED NULL AND VOID, AND SHALL NOT “CARRY OVER” TO ANOTHER CALENDAR YEAR. The Sweepcash awarded via this method will be added to the eligible Participant’s account subject to account verification and compliance in full with this subsection (d). + +5. NOTE: A Participant must ensure that their handwriting is legible. If the Participant’s hand writing is not legible or otherwise fails to comply with this subsection (d), the entry will be void and the Sweepcash will not be credited to the Participant’s account. The legibility of a Participant’s hand writing shall be determined by Manifold in its sole discretion. + +6. THE REQUEST MUST ONLY BE MADE BY THE PARTICIPANT AND MUST BE POSTED FROM THE SAME STATE AS THE PARTICIPANT’S VERIFIED RESIDENTIAL ADDRESS. Requests made by any other individual or any entity, including but not limited to any commercial sweepstakes subscription notification and/or entering services, will be declared invalid and Sweepcash will not be credited to the Participant’s account. + +7. Tampering with the entry process or the operation of the Sweepstakes, including but not limited to the use of any device to automate the Sweepcash request/entry process, is prohibited and any requests/entries deemed by Manifold, in its sole discretion, to have been submitted in this manner will be void. In the event a dispute regarding the identity of the individual who actually submitted a request cannot be resolved to Manifold’s satisfaction, the affected request/entry will be deemed ineligible, in the sole discretion of Manifold. + +2.3. The amount of Sweepcash a Participant is available to be awarded from any and all sources under Sections 2.2 (a)-(d) shall be as reflected in these Rules or on the Platform but may be changed at any time by Manifold in its sole discretion. + +2.4. The amount of Sweepcash a Participant is awarded under Sections 2.2 (a)-(d) will be displayed in their account on manifold.markets on Manifold Application. + +2.5. In the event of a dispute as to the identity or efficacy of any registration, the authorized account holder of the email address used to register the Player Account will be deemed to be the Participant. The “authorized account holder” is the natural person assigned the email address by an internet access provider, online service provider or other organization responsible for assigning email addresses for the domain associated with the submitted address.  Manifold reserves the right to suspend or terminate any Player Account if Manifold or its third-party service providers cannot verify the identity of any natural person associated with the Player Account. + +2.6. Manifold is not responsible for lost, late, incomplete, invalid, unintelligible or misdirected Sweepcash requests or allocations. + +2.7. Use of any automated or other system(s) to manipulate or “farm” bonuses, account creation, or any other form of manipulation to acquire Sweepcash is prohibited and will result in disqualification and loss of eligibility to participate in the games. + +2.8. Inactive Accounts.  If a Participant deemed inactive or ineligible in the sole discretion of Manifold, Participant will forfeit any balance of Sweepcash.  Unless Manifold agrees and decides otherwise, Sweepcash is only valid for ninety (90) days from the date the Participant last logged on to their Customer Account and will thereafter automatically expire.  This forfeiture clause does not apply to Sweepcash which has already been used to participate in a Sweepstakes Prediction Game. + +2.9. Sweepcash will be forfeited if a Participant’s account is closed or terminated for any reason, or otherwise at Manifold’s sole discretion. + +‍ + +3. Sweepstakes Prediction Games- GAMEPLAY + +3.1. Participants with Sweepcash can use their Sweepcash to play sweepstakes prediction games within Manifold for a chance to obtain additional Sweepcash. Sweepcash accumulated through game play can be redeemed for cash and prizes of monetary value in accordance with these Rules. + +3.2. Participant will be able to use Mana to participate in Manifold’s prediction markets or Sweepcash to participate in Sweepstakes prediction games.  Sweepstakes prediction games will be clearly marked as such on both Manifold application and on manifold.markets.  The amount of Sweepcash the Participant stands to win will be clearly displayed on the Platform. If Participant is correct in their Sweepstakes game prediction, the Participant increases their Sweepcash balance by the payout amount and if they are incorrect the amount of Sweepcash the Participant used in the game is not returned. + +3.3. Only sweepstakes games played with Sweepcash provide the opportunity to win additional Sweepcash that may be redeemed for cash and prizes subject to these Rules. + +3.4. Sweepcash that has been won through game play (rather than collected using one of the methods described in Section 2 above) and is accumulated by Participant may be redeemed for a prize, subject to maximum and minimum prize redemption amounts stated in Section 6. Sweepcash possesses no real monetary value and may only be used to request a prize redemption to be approved and processed by Manifold. Approval is subject to Participant completing all verifications to confirm eligibility and adherence to all Sweepstakes Rules and Terms and Conditions of the Platform. + +3.5. The use of material, confidential, or non-public information to win, and/or redeem Sweepcash for cash and prizes are strictly prohibited.  Any attempt to manipulate Sweepstakes prediction games by utilizing methods such as making equal and opposite predictions, utilizing multiple accounts and identities, referring oneself to earn additional credits, and other manipulative, or collusive methods are not permitted and may result in account closure and forfeiture of Sweepcash, in the sole discretion of Manifold. + +3.6. Manifold’s decisions as to the administration and operation of the Sweepstakes, the game and the amount of winnings are final and binding. + +3.7. Redemption. Sweepcash obtained by any method in Section 2.2(a)-(d) is not immediately available for redemption of a prize and must be used at least once in a Sweepcash prediction game before it shall be considered eligible toward a prize redemption request; and, any Sweepcash obtained by a Participant by any method in Section 2.2(a)-(c) must be used to make prediction where the odds of winning have an implied probability of 99% or less, before the Sweepcash, if any, won by the Participant in the Sweepcash Game, may be eligible to be redeemed. + +3.8. Manifold reserves the right to change the prize win rates and payout odds of any of the Sweepstakes prediction games at any time. A Participant can obtain the actual and any amended details of any game at the point of entering an amount to play in the Sweepcash Game. It is a Participant’s responsibility to check the prize available on each occasion before they participate. + +‍ + +4. IDENTITY VERIFICATION AND CONFIRMATION OF POTENTIAL WINNERS + +4.1. POTENTIAL SWEEPSTAKES PREDICTION GAME WINNERS ARE SUBJECT TO VERIFICATION BY MANIFOLD AND MANIFOLD THIRD PARTY SERVICE PROVIDERS (IN ANY MANNER THEY MAY CHOOSE) AND THE DECISIONS OF MANIFOLD ARE FINAL AND BINDING IN ALL MATTERS RELATED TO THE SWEEPSTAKES. A PARTICIPANT IS NOT A WINNER OF ANY PRIZE, EVEN IF THE ONLINE OR MOBILE APP SCREEN INDICATES THEY ARE, UNLESS AND UNTIL THE PARTICIPANT’S ELIGIBILITY AND THE POTENTIAL WINNING PLAY HAS BEEN VERIFIED AND THE PARTICIPANT HAS FULLY COMPLIED WITH THESE SWEEPSTAKES RULES AND BEEN NOTIFIED THAT VERIFICATION IS COMPLETE. MANIFOLD WILL NOT ACCEPT ANY EVIDENCE OF WINNING OTHER THAN ITS OWN VALIDATION PROCESS. + +4.2. Potential prize winners must comply with these Sweepstakes Rules and winning is contingent upon fulfilling all requirements. + +4.3. A potential prize winner may be required to sign and return to Manifold, an affidavit/declaration of eligibility, and liability/publicity release (except where prohibited) in order to claim his/her prize (if applicable). + +4.4. If a potential winner cannot be contacted, fails to properly execute and return the affidavit/declaration of eligibility and liability/publicity release within the required time period (if applicable), fails to comply with these Sweepstakes Rules, or if the prize or prize notification is returned as undeliverable, that potential winner forfeits the prize. + +‍ + +5. ODDS OF WINNING + +5.1. Odds of winning will vary for each Sweepstakes Prediction Game and will be published by Manifold, visible to all Participants through the Platform. + +5.2. The Participant will choose the Sweepstakes Prediction Game and will use Sweepcash to play, and their win expectancy (odds of winning a Prize) will be a function of these choices. + +‍ + +6. PRIZES + +6.1. A Participant’s Sweepcash balance is displayed in the Participant’s Wallet on the Platform. + +6.2. Participant must successfully complete a Know-Your-Customer (KYC) Verification process provided by Manifold and its third-party service providers to validate eligibility to participate before redeeming any prize. This includes, but is not limited to, providing proof of a valid government-issued photo identification, biometric facial scan recognition, proof of address, and validation of SSN. + +6.3. TO BE ELIGIBLE FOR A SWEEPSTAKES PRIZE OR A SWEEPSTAKES PRIZE REDEMPTION: + +(a) A PARTICIPANT MUST BE A LEGAL RESIDENT OF AND LOCATED IN THE STATES OF THE UNITED STATES (EXCLUDING DELAWARE, IDAHO, MICHIGAN, AND WASHINGTON); + +(b) THE PARTICIPANT’S DETAILS MUST MATCH THOSE OF THE PARTICIPANT’S ACCOUNT. + +6.4. The maximum redemption of a prize won by a single Participant during any individual Sweepstakes Game Period (“Maximum Redemption”) is limited to the value of US $5,000 in New York or Florida. Any requested Redemption in excess of the value of US $5,000 in New York or Florida, will not be paid to the Participant during the period, but must be deferred until the next Sweepstakes Period.  For clarity, Section 6.4 applies both to legal residents of New York or Florida and also to Participants who Manifold may be physically located in New York or Florida at the time of Sweepstakes Prediction Game entry, as determined in Manifold’s sole discretion. + +6.5. The minimum redemption of a prize which may be requested by a Participant during any Sweepstakes Period (“Minimum Redemption”) shall be 25 eligible Sweepcash accumulated in your Account as to which the activity necessary for redemption has been satisfied, which currently corresponds to a $25 prize redemption request.  Any requested redemption less than the Minimum Redemption shall not be permitted via the Platform or paid to the Participant. + +6.6. We reserve the right to charge handling and/or payment processing fees for processing the redemption of Prizes. + +6.7. Manifold reserves the right, in its sole discretion, to limit a Participant’s redemption of Sweepcash to the value of USD $1,000 per week, in the event that Manifold suspects suspicious or manipulative activity. No more than the stated number of prizes will be awarded.  For more information, Participants should contact [help@manifold.markets](mailto:help@manifold.markets). + +6.8. Participant shall solely be responsible for any federal, state or local taxes or fees associated with any prize redemption. Sponsor will provide Participants with necessary tax forms if requested by Participant. Participants are responsible for remittance of all applicable taxes and fees associated with prize receipt and/or redemption and should consult their accounting or tax experts for any assistance. + +6.9. Sweepcash is non-transferable and no substitution will be made except as provided herein at Manifold's sole discretion. Manifold reserves the right to substitute the listed prize of equal or greater value for any reason owing to circumstances outside Manifold's reasonable control. + +6.10. Prize winners must request the release of their Prize solely through Manifold application or at manifold.markets. + +‍ + +7. REDEMPTION OF PRIZES + +7.1. Subject to these Terms and Conditions: + +(a) Prizes shall be allocated to the Customer Account and paid or sent to the email address and/or bank account associated with your Account.  We will only communicate with persons using the email address registered and associated with the Account. + +7.2. You agree that we are entitled to conduct any identification, credit and other verification checks that we may reasonably require and/or that are required of us under applicable laws and regulations or by relevant regulatory authorities. + +7.3. Until all required verification checks are completed to our satisfaction: + +(a) any request you have made for redemption of Prizes will remain pending; and + +(b) we are entitled to restrict your Customer Account in any manner that we may reasonably deem appropriate, including by suspending or deactivating your Customer Account. + +7.4. We will carry out additional verification procedures for any single or cumulative of Prizes valued at $600 or more, and Manifold reserves the right to carry out such additional verification procedures in the case of a request to redeem any amount. Additional verification procedures may, for example, include requests for and examination of copies of your identification documentation (including photo identification) such as SSN, passport and proof of your address such as a utility bill. + +7.5. Where any identification, credit or other verification check we require cannot be completed to our satisfaction because you have not provided any document we request from you in the form that we require within 30 days of the date the document was first requested, the redemption request will be disqualified and deemed null and void. In addition, Manifold shall be under no obligation to continue with the verification check and may in our sole discretion deactivate your Customer Account. + +7.6. Participants who have questions regarding any deactivated or suspended account should contact Customer Support by emailing help@manifold.markets. + +7.7. Manifold reserves the right to run external verification checks on all cardholders with third party credit agencies on the basis of the information provided on registration. + +7.8. We reserve the right, in our sole discretion, to refund purchases in lieu of processing a prize redemption via the method selected by the winning Participant. If that occurs, Refunds will be made to the same payment source used to purchase the Mana. + +7.9. We make our best efforts to process requests within the quoted amount of time but do not guarantee processing times for prizes. + +7.10. We will only process one Prize redemption request per Customer Account in any 5 day period. + +7.11. You acknowledge and agree that in some circumstances it may take up to 30 days to process the payment of any redeemed Prizes to you. + +7.12. Redemption of Prizes may experience delays due to our identity verification process. Prizes of $600 of more may require a longer processing time than usual due to compliance checks and may also be allocated in more than one equivalent lump sum. This may add to the normal processing time, but is dependent on the circumstances of each individual case. + +7.13. You acknowledge and agree that we may in our sole discretion, from time to time, appoint one or more to accept payments (including merchant facilities) from Players on our behalf. + +7.14. A Third Party Payment Processor will have the same rights, powers and privileges that we have under these Terms and Conditions and will be entitled to exercise or enforce their rights, powers and privileges as our agent or in their own name. In no event shall we be liable to any Player for any loss, damage or liability resulting from the Third Party Payment Processor’s negligence and/or acts beyond the authority given by Manaplay LLC. + +7.15. Sweepcash may be forfeited if a Customer Account is deactivated due to a violation of our Terms and Conditions or for any reason, or at our discretion.  See Terms and Conditions. + +7.16. If we mistakenly credit your Customer Account from time to time with Prizes that do not belong to you, whether due to a technical error, human error or otherwise, the amount will remain property of Manaplay LLC . and will be deducted from your Customer Account. If you have been issued a Prize that does not belong to you, the value of the mistakenly issued Prize will (without prejudice to other remedies and actions that may be available at law) constitute a debt owed by you to us. In the event of an incorrect crediting, you are obliged to notify Customer Support by using the “Contact” link on the Platform or by emailing help@manifold.markets.  Manifold at all times reserves the right to deduct Sweepcash from your Account or otherwise charge or adjust your account to correct errors. + +7.17. It is the responsibility of the Participant to retain copies of transaction records and these Sweepstakes Rules as updated from time to time. + +‍ + +8. ENTRY CONDITIONS AND RELEASE + +8.1. By participating, each Participant agrees to: + +(a) comply with and be bound by these Sweepstakes Rules and the decisions of Manifold which are binding and final; + +(b) release and hold harmless Manifold and its parent, subsidiary, and affiliated companies, the prize suppliers and any other organizations responsible for sponsoring, fulfilling, administering, advertising or promoting the Sweepstakes, and all of their respective past and present officers, directors, employees, agents and representatives (collectively, the “Released Parties”) from and against any and all claims, expenses, and liability, including but not limited to negligence and damages of any kind to persons and property, including but not limited to invasion of privacy (under appropriation, intrusion, public disclosure of private facts, false light in the public eye or other legal theory), defamation, slander, libel, violation of right of publicity, infringement of trademark, copyright or other intellectual property rights, property damage, or death or personal injury arising out of or relating to a Participant’s entry, creation of an entry or submission of an entry, participation in the Sweepstakes, acceptance or use or misuse of prizes (including any travel or activity related thereto) and/or the broadcast, exploitation or use of entry; and + +(c) indemnify, defend and hold harmless Manifold from and against any and all claims, expenses, and liabilities (including reasonable attorneys/legal fees) arising out of or relating to a Participant’s participation in the Sweepstakes and/or Participant’s acceptance, use or misuse of prizes. + +‍ + +9. WINNER’S LIST + +9.1. Except where prohibited, participation in the Sweepstakes constitutes each Participant’s consent to Manifold's and its agents’ use of Participant’s name, likeness, photograph, voice, opinions and/or hometown and state/province/territory for promotional purposes in any media, worldwide, without further payment, notice or consideration. + +9.2. For a list of winners during a Sweepstakes Period within a year from the date of request, send a request in writing by mail, specify the Month and Year requested (one Sweepstakes Game and Sweepstakes Period per request), and enclose a self-addressed, stamped envelope to: + +Manaplay LLC + +ATTN: SWEEPSTAKES WINNERS + +P.O BOX 170247 + +San Francisco, CA 94117 + +‍ + +10. GENERAL CONDITIONS + +10.1. Manifold reserves the right to cancel, suspend and/or modify the Sweepstakes or these Sweepstakes Rules, or any part of the Sweepstakes or these Sweepstakes Rules, with immediate effect owing to circumstances outside its reasonable control and only where circumstances make it unavoidable if any fraud, technical failures or any other factor beyond Manifold's reasonable control impairs the integrity or proper functioning of the Sweepstakes, as determined by Manifold in its sole discretion. + +10.2. Manifold reserves the right in its sole discretion to disqualify any individual it finds to be tampering with the entry process or the operation of the Sweepstakes or to be acting in violation of these Sweepstakes Rules or any other promotion or in an unsportsmanlike or disruptive manner. + +10.3. Any attempt by any person to deliberately undermine the legitimate operation of the Sweepstakes may be a violation of criminal and civil law, and, should such an attempt be made, Manifold reserves the right to seek damages from any such person to the fullest extent permitted by law. Manifold's failure to enforce any term of these Sweepstakes Rules shall not constitute a waiver of that provision. + +10.4. In all other cases, Manifold reserves the right to cancel, suspend and/or modify the Sweepstakes. Any notice regarding cancellation, suspension and/or modification will be posted on Manifold on Manifold Application or at manifold.markets. + +10.5. In the event of modifying the Sweepstakes, a Participant’s continued enrollment and/or participation in the Sweepstakes constitutes acceptance of the modified terms. + +‍ + +11. CUSTOMER SUPPORT + +11.1. To ensure fairness and the integrity of the promotion to all Participants, Manifold will respond to questions via help@manifold.markets and may post updates/communications on its social media pages. + +11.2. Any Participant posting or seen to be posting comments on Manifold's social media pages or Manifold Chat (including but not limited to Manifold Discord Channel), or elsewhere during the promotion that are considered bullying, spiteful or upsetting to other Participants, players and fans of Manifold or directly aimed to disparage Manifold, will have their comments removed, will be disqualified from the Sweepstakes and subject to termination of their Account. Manifold reserves the right to alert social media providers to any such behavior and the Participant may have his/her relevant social media account frozen pending investigation. + +‍ + +12. PARTICIPANT’S PERSONAL INFORMATION + +12.1. Information collected from Participants is subject to Manifold's Privacy Policy which is available on the Platform and at manifold.markets. + +These Sweepstakes Rules were last updated on September 16th, 2024. diff --git a/docs/docs/sweepstakes.md b/docs/docs/sweepstakes.md new file mode 100644 index 0000000000..5f439674fd --- /dev/null +++ b/docs/docs/sweepstakes.md @@ -0,0 +1,68 @@ +# Sweepstakes FAQ + +Answers to questions about sweepstakes markets, eligibility, buying mana, withdrawals, taxes on winnings etc. + +### Who is eligible to participate in sweepstakes markets? + +- 18 years and older. +- US residents in select states are eligible to participate in sweepstakes markets: + - States eligible for sweepstakes (46 states): Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Florida, Georgia, Hawaii, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana, Maine, Maryland, Massachusetts, Minnesota, Mississippi, Missouri, Montana, Nebraska, Nevada, New Hampshire, New Jersey, New Mexico, New York, North Carolina, North Dakota, Ohio, Oklahoma, Oregon, Pennsylvania, Rhode Island, South Carolina, South Dakota, Tennessee, Texas, Utah, Vermont, Virginia, West Virginia, Wisconsin, Wyoming. + - States NOT eligible (4 states): Delaware, Idaho, Michigan, and Washington. + - Residents of Washington D.C. are NOT eligible. + - Additional restrictions apply to some states: + - Residents of New York and Florida may not win and withdraw more than $5,000 per market. +- International users are not eligible to participate in sweepstakes markets, although we are working on expanding as soon as possible. +- Users must complete KYC to participate in sweepstakes markets. This requires your full legal name, date of birth, phone number, and address. Some users may be required to upload a document proving their residence. + +### How do sweepstakes markets differ from the play-money markets on Manifold? + +All markets on Manifold are by default play-money and use our play-money called mana. Selected markets will have a second sweepstakes version created which will use sweepcash. This will share the same page, question, description and comments as the original play-money market, but will have seperate entries (trades) and prizes using Sweepcash. Users may switch back and forth between the two markets using the tab found on the market page. + +### How do I enter a sweepstakes market? + +Users may participate in a sweepstakes market by using sweepcash. It is free to enter and users can receive sweepcash by: + +- Verifying their phone number and personal details for a welcome gift. +- Completing their daily streak for a free bonus. +- As a free gift with some purchases. + +### How do I withdraw my Sweepcash winnings? + +Only sweepcash won from a market resolution can be withdrawn. Sweepcash received from gifts, bonuses, or exiting a market early can not be withdrawn and you must use it to win a resolved market first. Visit your withdrawals dashboard to view how much sweepcash you have won and can withdraw. Then, fill out your bank details and request the amount of sweepcash you wish to redeem for real-money. There is a $25.00 minimum withdrawal. + +### Withdrawal processing time + +Please expect to wait 5-7 business days after withdrawal as we process it. + +### Can I cash out my mana winnings or turn mana to Sweepcash? + +No, mana is purely a play-money and not exchangeable for sweepcash, money, or any other goods and items. + +### Do I need to pay taxes on my winnings? + +Manifold cannot provide tax advice to customers. Please consult with your state's tax laws and consult with a lawyer. + +Users who cash out more than $600 may be issued a 1099 form showing their total winnings. + +### How can I get one of my markets to be made in sweepstakes? + +The Manifold staff may elect, in its sole discretion, to transform any user-created question to have both a mana and sweepcash market. Creators will continue to manage the market and resolve the mana market, however Manifold will resolve the sweepstakes market. + +To increase the chances of having your market selected for sweepstakes: + +- It should be a binary market +- It should have clear, unambiguous criteria +- It should be actively managed +- It should be interesting to a broad audience +- Markets created by a user with a strong track record of creating and managing markets well will be prioritised. +- Markets with shorter resolution dates will be prioritised + +### What happens if I think a sweepstakes market has been resolved incorrectly? + +Only Manifold staff may resolve a sweepstakes market. Staff will adhere to the resolution criteria outlined in the description. When a market is selected to add sweepstakes functionality, Manifold may work with the creator and traders to ensure robust, unambiguous resolution criteria. Manifold, in its sole discretion, will determine sweepstakes market settlement. + +If you believe a sweepstakes market has been incorrectly resolved, please email info@manifold.markets + +### Do sweepstake markets contribute towards leagues? + +No, for the time-being we are sticking with mana and play money markets for leagues. Leagues will continue to award mana to users who perform the best on our play money markets. diff --git a/docs/docs/terms-and-conditions.md b/docs/docs/terms-and-conditions.md new file mode 100644 index 0000000000..0e7a7668d2 --- /dev/null +++ b/docs/docs/terms-and-conditions.md @@ -0,0 +1,571 @@ +# Terms and Conditions + +‍***These Terms and Conditions have been updated as of September 16th, 2024, and* supersede and replace all prior Terms & Conditions. These Terms and Conditions (“the Terms”) and the Arbitration Agreement form binding agreements between You and Manaplay LLC (“Manifold,” “Us, “We” or “Sponsor”) which provide all of the terms and conditions governing Your access and use of www[.manifold](https://www.google.com/url?q=http://www.manifoldmarkets.io&sa=D&source=editors&ust=1726521609994474&usg=AOvVaw1VPcmWJOqa3fx8asNOAcbm).markets and any related Manifold applications (the “Platform”) as well as your creation of your User Account, use of the Markets and Games on the Platform, participation in any Sweepstakes Promotions, and any transactions or dealings with Us in any way (collectively, the “Services”).** + +**_IMPORTANT NOTICES:_** + +**THIS WEBSITE AND THE SERVICES PROVIDED HEREIN DO NOT OFFER “REAL MONEY GAMBLING”. No actual money is required to play, and the Service is intended for entertainment, academic, and social purposes only.** + +**NO PURCHASE OR PAYMENT IS NECESSARY TO ENTER OR WIN.  A PURCHASE OR PAYMENT OF ANY KIND WILL NOT INCREASE YOUR CHANCE OF WINNING.  VOID WHERE PROHIBITED.   SEE SWEEPSTAKES RULES FOR FULL DETAILS.** + +**THESE TERMS AND CONDITIONS INCLUDE A MANDATORY ARBITRATION AND CLASS ACTION WAIVER AGREEMENT WHICH REQUIRES THAT ANY PAST, PENDING, OR FUTURE DISPUTES BETWEEN YOU AND US SHALL BE RESOLVED BY FINAL AND BINDING ARBITRATION ON AN INDIVIDUAL BASIS ONLY AND FOR YOUR LOSSES ONLY. YOU MAY NOT PROCEED AS A CLASS REPRESENTATIVE, MEMBER OR PART OF ANY PROPOSED CLASS, COLLECTIVE ACTION, MASS ARBITRATION, PRIVATE ATTORNEY GENERAL SUIT OR ANY REPRESENTATIVE PROCEEDING, OR OTHERWISE SEEK TO RECOVER ON BEHALF OF OTHERS OR FOR THE BENEFIT OF OTHERS IN ANY TYPE OF CLAIM OR ACTION.  ARBITRATION MEANS YOU WILL NOT BE ABLE TO SEEK DAMAGES IN COURT OR PRESENT YOUR CASE TO A JURY.** + +**OPT-OUT. IF YOU DO NOT WISH TO BE SUBJECT TO ARBITRATION ON A RETROACTIVE BASIS AND AS TO ANY FUTURE CLAIMS, *AND* YOU HAVE *NOT* PREVIOUSLY AGREED TO AN ARBITRATION PROVISION WITH US IN CONNECTION WITH YOUR USE OF OUR SERVICES, YOU MAY OPT OUT OF THE ARBITRATION AGREEMENT WITHIN THIRTY (30) DAYS BY FOLLOWING THE INSTRUCTIONS PROVIDED IN THE “BINDING ARBITRATION AGREEMENT AND CLASS ACTION WAIVER” – SEE SECTION 11 OF THESE TERMS, BELOW.** + +**PLEASE READ THE FOLLOWING Terms and Conditions, THE ARBITRATION AGREEMENT AND CLASS ACTION WAIVER (SEE SECTION 11 BELOW), THE PRIVACY POLICY AND THE OFFICIAL SWEEPSTAKES RULES CAREFULLY BEFORE USING THE SERVICES OFFERED IN CONNECTION WITH ANY Manifold SERVICES OR WEBSITE OR APPLICATION. YOU AGREE THAT YOUR CONTINUED USE OR ACCESS OF THE SITE OR SERVICES SHALL BE SUBJECT TO THESE Terms and Conditions, WHICH FURTHER INCORPORATE AND INCLUDE THE PRIVACY POLICY, THE OFFICIAL SWEEPSTAKES RULES, AND THE Manifold RESPONSIBLE SOCIAL GAMING POLICY.** + +**You represent and warrant that You have the right, authority, and capacity to accept these Terms and to abide by them, that You are of legal age and that You have fully read and understood the Terms. You must read these Terms carefully in their entirety before checking the box for acceptance of these Terms. By checking the acceptance, or by accessing the Games or creating a User Account, You confirm that You have read and agree to be bound by these Terms. If you do not agree with any provision of these Terms and Conditions or any other linked policy, rules, or terms you must not check the box for acceptance and you must not use the Service.** + +**1.** CHANGES TO Terms and Conditions AND RELATED POLICIES + +1.1. From time to time, We may modify or amend these Terms. If we do so, any such modifications or changes shall be reflected on the Platform in the Terms and Conditions. We may also notify You by email regarding any material changes to the Terms. Whether You receive or review such notifications, You agree that You will be bound by any such changes and that it shall be Your responsibility to check the Terms and Conditions as posted on the Platform prior to accessing the Platform or partaking in any Services. Your further use of the Services after any changes are posted shall constitute further consent and agreement to the Terms as changed or amended. + +1.2. From time to time, We may also modify our Privacy Policy, Sweepstakes Rules, Responsible Social Gaming Policy which are incorporated as part of these Terms. If we do so, any such modifications or changes shall be reflected on the Platform. You agree that You will be bound by any such changes and that it shall be Your responsibility to check the Rules and the Policies as posted on the Platform regularly and prior to accessing the Platform or partaking in any Services. Your further use of the Services after any changes are posted shall constitute further consent and agreement to the Incorporated Policies as changed or amended. + +1.3. In the event of any conflict between the Terms and the Privacy Policy, Sweepstakes Rules or Responsible Social Gaming Policy, the Terms shall control. + +**2. DEFINITIONS** + +**Content** means text, graphics, user interfaces, visual interfaces, photographs, trademarks, logos, sounds, music, artwork, computer code and other material used, displayed or available as part of the Games and Platform, including virtual coins. + +**Customer Account** means an account held by a Player. + +**Excluded Territory** means, for For Sweepcash Sweepstakes Games, Excluded Territory means Delaware, Idaho, Michigan, Washington.  Other Restrictions and Rules concerning eligibility apply to – see the Manifold Sweepstakes Rules in effect at time of promotion for further details. + +**Sweepcash** means Virtual Coins used to enter sweepstakes prediction contests subject to the Sweepstakes Rules, in the form of virtual coins which enable you to play the Sweepstakes Games. We may give you Sweepcash free of charge when you sign up to the Platform, as a bonus when you purchase Mana or via free alternative methods of entry as set out in the Sweepstakes Rules. You may win more Sweepcash when you play Sweepstakes Games. Sweepcash may not be transferred or sold by You. YOU CANNOT PURCHASE Sweepcash. + +**Mana** means the virtual coins which enable you to play the Mana Games. Mana may be purchased but are also always made available to play games free of charge. We may also give you Mana free of charge when you sign up to a Platform and thereafter at regular intervals when you log in to the Platform. Mana have no monetary value and cannot under any circumstance be exchanged for cash or prizes of monetary value. + +**Mana Game** means any game or mode played with Mana virtual coins. You may only win more Mana when you play the Mana Games, and you may purchase more Mana on the Platform. You cannot win monetary prizes when you play Mana Games. + +**Fraudulent Conduct** means any of the conduct described in Section 6.1. + +**Game** means any one or more Mana Game(s) or Sweepstakes Game(s) available on the Platform. We reserve the right to add and remove Games from the Platform at our sole discretion. + +**Inactive Account** means a Customer Account which has not recorded any log in or log out for a period exceeding 12 consecutive months. + +**Platform** means the services provided through any URL or mobile application belonging to, or licensed to, Manifold and branded as part of the “Manifold” family of games, including the website located at https://www.manifold.markets and all subdomains, subpages and successor sites thereof, as well as all Games, features, tools and services available thereon. + +**Player** or **you** means any person who uses the Platform to register an account or play Games. + +**Prizes** means available sweepstakes prizes under the Sweepstakes Rules. + +**Sweepstakes** **Rules** means the applicable Sweepstakes Rules in effect at the time as posted on the Platform. + +**Sweepstakes Game** means any game played with Sweepcash. + +**Terms and Conditions** or **Terms** means these Terms and Conditions, as amended from time to time. + +**Third Party Websites** means a third party website not controlled by us. + +**Virtual Coins** means Mana or Sweepcash used in the Games or as present in your Wallet at any time. + +**Wallet** means the section of the Platform that displays Player balances. + +**We**, or **our** or **Manifold** means Manaplay LLC and any related companies. + +**3. YOUR PARTICIPATION** + +**Restrictions** + +3.1. You hereby declare and warrant that: + +(a) you are over 18 years of age or such higher minimum age as required by the laws or regulations in the jurisdiction in which you are located at the time of accessing the Service and are, under the laws applicable to you, allowed to participate in the Games offered on the Platform; + +(b) left intentionally blank + +(c) WHEN PARTICIPATING IN Sweepcash GAMES/SWEEPSTAKES, YOU DO NOT ACCESS THE PLATFORM FROM THE EXCLUDED TERRITORIES INCLUDING DELAWARE, IDAHO, MICHIGAN  AND WASHINGTON. + +(d) you participate in the Games for recreational and entertainment purposes only; + +(e) you participate in the Games on your own behalf and not on the behalf of any other person; + +(f) all information that you provide to us during the term of validity of these Terms and Conditions is true, complete and correct, and you will immediately notify us of any change to such information; + +(g) money that you use to purchase Mana is not tainted with any illegality and, in particular, does not originate from any illegal activity or source, or from ill-gotten means; + +(h) you will not be involved in any fraudulent, collusive, fixing or other unlawful activity in relation to your or third parties’ participation in any of the Games and you will not use any software-assisted methods or techniques (including but not limited to bots designed to play automatically) or hardware devices for your participation in any of the Games. We reserve the right to invalidate any participation in the event of such behavior; and + +(i) in relation to the purchase of Mana, you must only use a valid payment method (or credit card, where applicable) which belongs to you. + +3.2. It is a Player’s responsibility to ensure that their use of the Platform is lawful in their jurisdiction. Any person who is knowingly in breach of this clause, including any attempt to circumvent this restriction, for example, by using a VPN, proxy or similar service that masks or manipulates the identification of your real location, or by otherwise providing false or misleading information about your location or place of residence, or by Participating through a third party or on behalf of a third party located in a jurisdiction where it is unlawful to participate, is in breach of these Terms and Conditions. You may be committing fraud and may be subject to criminal prosecution. + +**Eligible Players** + +3.3. Employees of Manifold, any of its respective affiliates, or individuals involved with the design, production, execution or distribution of the Sweepcash Markets are not eligible to participate. + +**4. YOUR CUSTOMER ACCOUNT** + +**Single Account** + +4.1. You are allowed to have only one Customer Account on the Platform. If you attempt to open more than one Customer Account, all accounts you have opened or try to open may be cancelled or suspended and the consequences described in Section 13.3 may be enforced. + +4.2. You must notify us immediately if you notice that you have more than one registered Customer Account on any one Platform. + +4.3. You are prohibited from allowing anyone else to access or use your Customer Account for any purpose. + +**Accuracy** + +4.4. You are required to keep your registration details up to date at all times. If you change your address, email, phone number or any other contact or personal information contact help@manifold.markets to update your details. The name that you provide to us at registration must be identical to that listed on your government issued identification. + +**Password** + +4.5. As part of the registration process, you will have to choose a password to login into the Platform, unless you login to your Customer Account using the Apple®, Facebook®, Google ®, or Twitter ® login facility in which case your password on those platforms will apply. It is your sole and exclusive responsibility to ensure that your login details are kept securely. You must not disclose your login details to anyone. We are not responsible for any abuse or misuse of your Customer Account by third parties due to your disclosure of your login details to any third party, whether such disclosure is intentional or accidental, active, or passive. If your password is lost or stolen, or if there is unauthorized use of your account, contact us immediately at help@manifold.markets + +**Account Transfers** + +4.6. You are not allowed to transfer Sweepcash between Customer Accounts, or from your Customer Account to other players, or to receive Sweepcash from other Customer Accounts into your Customer Account, or to transfer, sell and/or acquire Customer Accounts. + +**Inactive Customer Accounts** + +4.7. We reserve the right to deactivate your Customer Account if it is deemed to be an Inactive Account. + +**Closing of Customer Accounts** + +4.8. If you wish to close your Customer Account, you may do so at any time by selecting the “Email Us” link on the Platform’s “About” page and submitting a request to close your Customer Account. The effective closure of the Customer Account will correspond with the termination of the Terms and Conditions. + +4.9. You will be able to open your Customer Account again by sending a request to the Customer Support team. All requests for the re-opening of an account will be evaluated by our Customer Support and Compliance teams, which shall abide by strict customer protection guidelines. + +4.10. All Virtual Coins are forfeited if your Customer Account is terminated or suspended for any reason, in Manifold’s sole and absolute discretion, or if the Service is no longer available. To the extent legally permissible, if your Customer Account, or a particular subscription for the Service associated with your Customer Account, is terminated, suspended and/or if any Virtual Coins are selectively removed or revoked from your Customer Account, no refund will be granted, no Virtual Coins will be credited to you or converted to cash or other forms of reimbursement. + +**Discretion to Refuse or Close Accounts** + +4.11. We reserve the right to refuse to open a Customer Account or to close a Customer Account in our sole discretion. + +‍ + +**RESPONSIBLE SOCIAL GAMING** + +4.12. Manifold actively supports responsible gameplay and encourages its Players to make use of a variety of responsible gameplay features to better manage their Customer Account. + +4.13. We refer to you Responsible Social Gaming Policy for full details. + +4.14. Manifold is committed to providing excellent customer service and supporting responsible gameplay. Although Manifold will use all reasonable efforts to enforce its responsible gameplay policies, Manifold does not accept any responsibility or liability if you nevertheless continue gameplay or seek to use the Platform with the intention of deliberately avoiding relevant measures in place or Manifold is otherwise unable to enforce its policies for reasons outside of Manifold’s reasonable control. + +**GAMES** + +4.15. **Rules.** Games offered on the Platform may have their own rules which are available on each Platform. It is your responsibility to read the rules of a Game before playing. You must familiarize yourself with the applicable terms of play and read the relevant rules before playing any Game. + +**Mana Purchases and Refund Policy** + +4.16. You can purchase additional Mana in the “Payments” section of Your Customer Account Platform by providing billing authorization through the in-app purchase payment facility of the operating system on your device (e.g. Apple or Google) or via another third party provider. + +4.17. The price of the Mana will be the price indicated on the order page. When your purchase is complete, we may send you a confirmation email with your order details. Please check that the details in the confirmation message are correct and keep a copy for your records. + +4.18. For Mana purchases made on the Website, Manifold accepts all major debit and credit cards. Payments will appear on your statement as “Manaplay LLC.” All payments are final. **No refunds will be issued**. In the event of a dispute regarding the identity of the person submitting an entry, the entry will be deemed submitted by the person in whose name the account was registered. + +4.19. If you purchase Mana through the in-app purchase facility in the mobile app, your purchase will be governed by the payment terms and conditions of the provider of the facility (Apple or Google). You can email help@manifold.markets for questions concerning refunds of purchases made through Apple or Google, or the other available payment providers in the Platform. + +**Mana and Sweepcash Balances** + +4.20. You may participate in any Game only if you have sufficient virtual coins as shown in your Wallet on the Platform, however it is never necessary to purchase Mana to continue playing.  If your balance of Mana is insufficient, We will provide instructions for you to receive sufficient Mana in order to continue playing a Mana Game, or We may automatically replenish your Wallet with sufficient Mana in order to continue playing a Mana Game. + +4.21. We may assign minimum or maximum Mana purchases as specified and offered on the Platform. + +4.22. The purchase of Mana is the purchase of a product that allows you to participate in Mana Games and is not the deposit of funds which can be withdrawn. Funds used to purchase Mana will not, and cannot, be refunded to you. Mana do not have any real money value. + +4.23. Mana or Sweepcash that have been submitted for play and accepted cannot be changed, withdrawn or canceled and the Mana or Sweepcash (whichever applicable) will be drawn from your Mana or Sweepcash Wallet instantly upon use. + +4.24. If you are found to have one or more of your purchases returned and/or reversed or charged back, your Customer Account will be suspended or terminated, in our sole discretion. + +**License; No Right or Title in Virtual Coins** + +4.25. Other than a limited, personal, revocable, non-transferable, non-sublicenseable license to use the Virtual Coins in Games with the Service, you have no right or title in or to any such Virtual Coins appearing or originating with the Service, or any other attributes associated with use of the Service or stored within the Service. Manifold has the absolute right to manage, regulate, control, modify and/or eliminate such Virtual Coins as it sees fit in its sole discretion, and Manifold shall have no liability to you or anyone for the exercise of such rights. In addition to the foregoing, Manifold may selectively remove or revoke Virtual Coins associated with your account. + +4.26. Subject to your agreement and continuing compliance with these Terms of Service, Manifold grants you a personal, non-exclusive, non-transferable, non-sublicensable, revocable, limited license to access and use the Platform and the Content through a supported Web browser or mobile device, solely for your personal, private entertainment and no other reason. + +4.27. These Terms of Service do not grant you any right, title or interest in the Platform or Content. + +4.28. You acknowledge and agree that your license to use the Platform is limited by these Terms of Service and if you do not agree to, or act in contravention of, these Terms of Service, your license to use the Platform (including the Games and Content) may be immediately terminated. + +**Transfer of Virtual Coins** + +4.29. The sale or transfer of Virtual Coins or Accounts is strictly prohibited. Any attempt to do so is in violation of these Terms and Conditions and may result in a lifetime ban from the Service and possible legal action. + +**Void Games** + +4.30. We reserve the right to declare the result of any Game void, partially or in full, if, in our sole discretion, we deem it obvious that there was an error, mistake, misprint or technical error on the pay-table, win-table, minimum or maximum stakes, odds or software. + +**Final Decision** + +4.31. In the event of a discrepancy between the result showing on a Game or Platform and Manifold’s or its affiliate’s server software, the result showing on Manifold’s or its affiliate’s server software will be the official and governing result. + +**5. CHAT Terms and Conditions** + +5.1. Chat Functionality: Our Platform provides a Discord Channel (“Chat”) that allows users to communicate with each other in real-time.  Chat also includes direct message communication within the platform.  This feature is intended for lawful and appropriate communication related to the use of our Platform. + +5.2. Prohibited Conduct: When using the Chat, you agree not to: + +- Send any unlawful, threatening, abusive, harassing, defamatory, obscene, or otherwise objectionable messages. +- Impersonate any person or entity, or misrepresent your affiliation with any person or entity. +- Share personal information, contact details, or engage in any unwanted solicitation of other users. +- Transmit any viruses, malware, or other malicious code. +- Engage in any commercial activities or advertisements without our prior written consent. + + 5.3. Monitoring and Moderation: We reserve the right, but not the obligation, to monitor and review chat messages for compliance with these terms and applicable laws. We may remove or redact any messages that violate these terms or that we deem inappropriate, at our sole discretion. + + 5.4. Reporting Violations: If you encounter any inappropriate or abusive behavior while using the Chat, you can report it by using the built-in “Report” feature in the chat itself or by sending an email to help@manifold.markets with subject “Chat Guidelines Violation”. + + 5.5. No Responsibility for User Content: We are not responsible for the content of messages sent through the Chat by other users. The views and opinions expressed in chat messages are those of the individual users and do not reflect the views of our company. + + 5.6. Termination of Access: We reserve the right to terminate or suspend your access to the Chat, or to our Platform entirely, if we determine that you have violated these terms or engaged in any inappropriate or unlawful conduct. + +By using the Chat, you agree to comply with these terms and all applicable laws and regulations. We may update these terms from time to time, and your continued use of the Chat constitutes your acceptance of any such updates. + +‍ + +**6. PROMOTIONS** + +6.1. All promotions, including Sweepstakes Games, contests, special offers and bonuses are subject to these Terms and Conditions, the Binding Arbitration and Class Waiver Agreement, the Sweepstakes Rules and subject to any additional terms that may be published at the time of the promotion. + +6.2. Manifold reserves the right to withdraw or modify such promotions without prior notice to you. + +6.3. If, in the reasonable opinion of Manifold, we form the view that a Player is abusing any promotion, to derive any advantage or gain for themselves or another Player, including by way of Fraudulent Conduct, we may, at our sole discretion, withhold, deny or cancel any advantage, bonus or Prize as we see fit, or terminate of suspend the Account of such Player. + +**7. FRAUDULENT CONDUCT** + +7.1. You will not, directly or indirectly: + +(a) hack into any part of the Games or Platform through password mining, phishing, or any other means; + +(b) attempt to modify, reverse engineer, or reverse-assemble any part of the Games or Platform; + +(c) knowingly introduce viruses, Trojans, worms, logic bombs, spyware, malware, or other similar material; + +(d) circumvent the structure, presentation or navigational function of any Game so as to obtain information that Manifold has chosen not to make publicly available on the Platform; + +(e) engage in any form of cheating or collusion; + +(f) use the Service, Platform, or the systems of Manifold to facilitate any type of illegal money transfer (including money laundering proceeds of crime); + +(g) participate in or take advantage of, or encourage others to participate in or take advantage of schemes, organizations, agreements, or groups designed to share: + +(i) special offers or packages emailed to a specific set of players and redeemable by URL; or + +(ii) identification documents (including, but not limited to, photographs, bills and lease documents) for the purpose of misleading Manaplay LLC. as to a Player’s identity. + +7.2. You must not use the Platform for any unlawful or fraudulent activity or prohibited transaction (including Fraudulent Conduct) under the laws of any jurisdiction that applies to you. We monitor all transactions to prevent money laundering. + +7.3. If Manifold suspects that you may be engaging in, or have engaged in fraudulent, unlawful or improper activity, including money laundering activities or any conduct which violates these Terms and Conditions, your access to the Service will be deactivated immediately and your Customer Account may be suspended. If your Customer Account is deactivated or suspended under such circumstances, Manifold is under no obligation to reverse any Mana purchases you have made or to redeem any Sweepcash that may be in your Customer Account. In addition, Manifold may pass any necessary information on to the relevant authorities, other online service providers, banks, credit card companies, electronic payment providers or other financial institutions. You will cooperate fully with any Manifold investigation into such activity. + +7.4 If you suspect any unlawful or fraudulent activity or prohibited transaction by another Player, please notify us immediately via the means of communication listed in the Customer Complaints procedure (described in Section 10). + +**8. INTELLECTUAL PROPERTY** + +8.1. The computer software, the computer graphics, the Platform and the user interface that we make available to you is owned by, or licensed to, Manifold or its associates and protected by copyright laws. You may only use the software for your own personal, recreational uses in accordance with all rules, Terms and Conditions we have established (including these Terms and Conditions and the Sweepstakes Rules) and in accordance with all applicable laws, rules and regulations. + +8.2. You acknowledge that Manaplay LLC. is the proprietor or authorized licensee of all intellectual property in relation to any Content. + +8.3. Your use of the Games and Platform does not provide you with any intellectual property rights in the Content, Games or Platform. + +8.4. You grant us, and represent and warrant that you have the right to grant us, an irrevocable, perpetual, worldwide, non-exclusive, royalty-free license to use in whatever way we see fit, any information, images, videos, comments, messages, music or profiles you publish or upload to any website or social media page controlled and operated by Manifold. + +8.5. You must not reproduce or modify the Content in any way, including by removing any copyright or trademark notice. + +8.6. All trademarks and logos displayed in the Games and Platform are the property of their respective owners and are protected by applicable trademark and copyright laws. + +8.7. Manifold requires the Players to respect the intellectual property rights of others. If you are the owner of copyright and you believe that your work has been used in the Service in a way that constitutes copyright infringement, please provide our Copyright Agent with a notice meeting all of the requirements of the Digital Millennium Copyright Act (“DMCA”). + +**Your notice should contain the following information:** + +(a) a physical or electronic signature of the person authorized to act on behalf of the owner of the copyright or other intellectual property interest; + +(b) a clear description of the copyrighted work or other intellectual property that you claim has been infringed; + +(c) a description of where the material that you claim is infringing is located in the Services; + +(d) your address, telephone number, and email address; + +(e) a statement by you that you have a good faith belief that the disputed use is not authorized by the copyright owner, its agent or the law; and + +(f) a statement by you, made under penalty of perjury, that the above information in your notice is accurate and that you are the copyright or intellectual property owner or authorized to act in the copyright or intellectual property owner’s behalf. + +Before you file your DMCA notice, please carefully consider whether or not the use of the copyrighted material at issue is protected by the Fair Use doctrine. If you file a DMCA notice when there is no infringing use, you could be liable for costs and attorneys’ fees. + +Our agent for notice of claims of copyright or other intellectual property infringement can be reached as follows: + +ATTN: Manifold DMCA Copyright Agent + +Manaplay LLC.425 Divisadero St STE 300 + +San Francisco, CA 94117 + +**9. DISRUPTIONS AND CHANGE** + +**No warranties** + +9.0. THE SERVICE, IN WHOLE AND IN PART (INCLUDING, WITHOUT LIMITATION, ALL CONTENT, AND USER MATERIALS), ARE PROVIDED, TRANSMITTED, DISTRIBUTED, AND MADE AVAILABLE “AS IS” AND “AS AVAILABLE” WITHOUT EXPRESS OR IMPLIED WARRANTIES OF ANY KIND, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. WITHOUT LIMITING THE GENERALITY OF THE FOREGOING, WE MAKE NO WARRANTY: (A) THAT THE SERVICE WILL BE UNINTERRUPTED OR ERROR FREE; (B) THAT DEFECTS OR ERRORS IN THE SERVICE WILL BE CORRECTED; (C) THAT THE SERVICE WILL BE FREE FROM VIRUSES OR OTHER HARMFUL COMPONENTS; (D) AS TO THE QUALITY, ACCURACY, COMPLETENESS AND VALIDITY OF ANY INFORMATION OR MATERIALS IN CONNECTION WITH THE SERVICE; (E) THAT YOUR USE OF THE SERVICE WILL MEET YOUR REQUIREMENTS; OR (F) THAT TRANSMISSIONS OR DATA WILL BE SECURE. + +**Exceptions** + +9.1. SOME JURISDICTIONS DO NOT ALLOW THE DISCLAIMER, EXCLUSION OR LIMITATION OF CERTAIN WARRANTIES, LIABILITIES AND DAMAGES, SO SOME OF THE ABOVE DISCLAIMERS, EXCLUSIONS AND LIMITATIONS MAY NOT APPLY TO YOU. IN SUCH JURISDICTIONS, OUR WARRANTIES AND LIABILITY WILL BE LIMITED TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW. + +**Malfunctions** + +9.2. Manifold is not liable for any downtime, server disruptions, lagging, or any technical or political disturbance to the Game play, nor attempts by you to participate by methods, means or ways not intended by us. + +9.3. Manifold shall have no liability for any damages or losses which are deemed or alleged to have arisen out of or in connection with any Platform or its content including, without limitation, delays or interruptions in operation or transmission, loss or corruption of data, communication or lines failure, any person’s misuse of a Platform or its content or any errors or omissions in content. + +9.4. In the event of a Platform system malfunction all Game play on that Platform is void. + +9.5. In the event a Game is started but fails to conclude because of a failure of the system, Manifold will reinstate the amount of Mana or Sweepcash played (whichever applicable) in the Game to you by crediting it to your Customer Account. Manifold reserves the right to alter Player balances and account details to correct such mistakes. + +9.6. Manifold reserves the right to remove any part of the Games from the Platform at any time. Any part of the Games that indicate incorrect behavior affecting Prize redemption, Game data, Mana balances, Sweepcash balances or other balances, that may be due to misconfiguration or a bug, will be cancelled and removed from the Platform. Player balances and Customer Account details may be altered in such cases in order to correct any mistake. + +**Change** + +9.7. Manifold reserves the right to suspend, modify, remove, or add Content to its application or Games at its sole discretion with immediate effect and without notice to you. We will not be liable to you for any loss suffered as a result of any changes made or for any modification or suspension of or discontinuance of the application or Games and you will have no claims against Manifold in such regard. + +**Service Suspension** + +9.8. We may temporarily suspend the whole or any part of the Service for any reason at our sole discretion. We may, but will not be obliged to, give you as much notice as is reasonably practicable of such suspension. We will restore the Service, as soon as is reasonably practicable, after such temporary suspension. + +**10. VIRUSES** + +10.1. Although we take all reasonable measures to ensure that the Platform and Games are free from computer viruses, we cannot and do not guarantee that the Platform and Games are free of such problems. It is your responsibility to protect your systems and have in place the ability to reinstall any data or programs lost due to a virus. + +**11. COMPLAINTS AND CUSTOMER SUPPORT** + +11.1. If you would like to contact our Customer Support department, you may contact us by selecting the “Contact Us” link on the Platform and filling in the form or by emailing help@manifold.markets. + +11.2. Under California Civil Code Section 1789.3, California consumers are entitled to the following specific consumer rights notice: The Complaint Assistance Unit of the Division of Consumer Services of the California Department of Consumer Affairs may be contacted in writing at 1625 N. Market Blvd., Suite N – 112, Sacramento, CA 95834, or by telephone at 1(800) 952 – 5210 + +**11.3. INITIAL DISPUTE RESOLUTION PROCEDURE** + +Before You assert any claim for damages or relief of any kind in an arbitration proceeding as provided for in this Section, the parties shall make a good faith attempt to resolve the dispute by following the procedure in this Section 10.3. The parties agree, before either party may initiate or demand arbitration against the other, we will individually and personally meet and confer, by telephone or videoconference, in a good-faith effort to resolve informally any claim covered by these Terms. Multiple individuals with disputes cannot participate in the same informal telephonic dispute resolution conference. If you are represented by counsel (which such representation will be at your sole cost and expense), your counsel may participate in the conference, but you shall also attend and participate in the conference. + +The party initiating the claim must give notice to the other party in writing of its intent to initiate an informal dispute resolution conference, which shall occur within thirty (30) days after the other party receives such notice, unless an extension is mutually agreed upon by the parties. To notify Manifold that you intend to initiate an informal dispute resolution conference, send us a communication in writing to help@manifold.markets with “Complaint” in the Subject Line, and text including the following information: + +(a) your username; + +(b) your first and last name, as registered on your Customer Account; + +(c) a detailed explanation of the complaint/claim; + +(d) any specific dates and times associated with the complaint/claim (if applicable); and + +(e) the remedy or action you are seeking from Manifold. + +If We wish to initiate a Complaint, we will send a similar communication to You at the email and/or land address associated with your account. + +Failure to submit a written communication with the information outlined above may result in a delay in our ability to identify and respond to your complaint/claim in a timely manner and will extend the 30 day time period for resolution before a formal arbitration may be commenced. Upon receipt of Your Complaint, we will endeavor to reply to your communication within 48 hours. Further, best efforts will be made to resolve any complaint/claim promptly and, at a maximum, within 30 days. + +After 30 days have passed since the submission of your Complaint which included all of the information required in Section 10.3, if for some reason you are not satisfied with the resolution of your complaint/claim, you may then, and only then, pursue an arbitration claim as provided in Section 13 below. The same rule and requirement applies to Manifold. + +The parties shall use their best efforts to settle any dispute, claim, question, or disagreement and engage in good faith negotiations which shall be a condition to either party initiating an arbitration claim as provided in these Terms. If the parties do not reach an agreed upon solution within a period of thirty (30) days from the time informal dispute resolution begins, then either party may initiate binding arbitration as the sole means to resolve claims, subject to these Terms. The aforementioned informal dispute resolution process is a prerequisite and condition precedent to commencing any formal dispute resolution proceeding, including litigation if You have successfully opt-out of the arbitration agreement. The parties agree that any relevant limitations period and filing fees or other deadlines will be tolled solely by the amount of time the parties initiate and engage in this informal dispute resolution process. + +Regardless of whether you decide to opt out of arbitration, pursuant to this Agreement, the terms set forth in this Section 10.3 Initial Dispute Resolution shall remain in full force and effect. + +**12. BINDING ARBITRATION & CLASS ACTION WAIVER AGREEMENT** + +**PLEASE READ THIS ARBITRATION & CLASS ACTION WAIVER AGREEMENT (the “Agreement”) CAREFULLY. THIS AGREEMENT INCLUDES A MANDATORY ARBITRATION PROVISION WHICH SETS FORTH HOW PAST, PENDING OR FUTURE DISPUTES BETWEEN YOU AND Manifold, INC. SHALL BE RESOLVED BY FINAL AND BINDING ARBITRATION ON AN INDIVIDUAL BASIS ONLY AND FOR YOUR OWN LOSSES ONLY. UNDER THIS AGREEMENT, YOU MAY NOT PROCEED AS A CLASS REPRESENTATIVE, MEMBER OR PART OF ANY PROPOSED CLASS, COLLECTIVE ACTION OR MASS ARBITRATION, PRIVATE ATTORNEY GENERAL SUIT OR ANY REPRESENTATIVE PROCEEDING, OR OTHERWISE SEEK TO RECOVER ON BEHALF OF OTHERS OR FOR THE BENEFIT OF OTHERS IN ANY TYPE OF CLAIM OR ACTION. ARBITRATION MEANS YOU WILL NOT BE ABLE TO SEEK DAMAGES IN COURT OR PRESENT YOUR CASE TO A JURY.** + +**12.1. ACCEPTANCE OF TERMS** + +By using, or otherwise accessing the Service, or clicking to accept or agree to this Agreement where that option is made available, you accept and agree to this Agreement. If you do not agree to this Agreement, then you may not access or use the Platform or Service. All of your activity on the Website or Platform and all or your transactions with Manifold, including all events which occurred before your acceptance of this Agreement, are subject to this Agreement. + +**12.2. SCOPE OF AGREEMENT TO ARBITRATE** + +You and Manifold agree that any past, pending, or future dispute, claim or controversy arising out of or relating to any purchase or transaction by You, your access to or use of any Platform or the Service, or to this Agreement, the Terms and Conditions, the Sweepstakes Rules or Privacy Policy (including without limitation any dispute concerning the breach, enforcement, construction, validity, interpretation, enforceability, or arbitrability of this Agreement or the Terms and Conditions) (a “Dispute”), shall be determined by arbitration, including claims that arose before acceptance of any version of this Agreement, except that you and Manifold are NOT required to arbitrate any Dispute in which either party seeks equitable and other relief for the alleged unlawful use of copyrights, trademarks, trade names, logos, trade secrets, or patents. In addition, in the event of any Dispute concerning or relating to this Agreement — including the scope, validity, enforceability, or severability of this Agreement or its provisions, as well as the arbitrability of any claims—you and Manifold agree and delegate to the arbitrator the exclusive jurisdiction to rule on his or her own jurisdiction over the Dispute, including any objections with respect to the scope, validity, enforceability, or severability of this Agreement or its provisions, as well as the arbitrability of any claims or counterclaims presented as part of the Dispute. + +11.3. **Separate Agreement**. The parties acknowledge that this Agreement is a separate agreement between the parties governed by the Federal Arbitration Act, and that any alleged or determined invalidity or illegality of all or any part of the Terms and Conditions, the Service, the Platform, the Sweepstakes Rules or the Privacy Policy shall have no effect upon the validity and enforceability of this Agreement. + +**12.4. INITIATING ARBITRATION** + +Following the conclusion of the initial dispute resolution process required by this Agreement, you may seek arbitration of a Dispute in accordance with the provisions of this Agreement. The arbitration shall be conducted by the American Arbitration Association (“AAA”) pursuant to its Consumer Arbitration Rules (“AAA Rules”), except as modified by this Agreement. The AAA Rules are available on the AAA’s website www.adr.org, or by calling the AAA at (800) 778-7879, or its then current telephone number as provided on its web site, or by sending a written request to: The American Arbitration Association, 1101 Laurel Oak Road, Suite 100, Voorhees, NJ 08043.  In the event the AAA is unavailable or unwilling to hear the dispute in accordance with this Agreement, the parties shall agree to, or a court shall select, another arbitration provider. + +By signing a demand for arbitration, a party certifies, to the best of their knowledge, information, and belief, formed after an inquiry reasonable under the circumstances, that: (i) the demand for arbitration is not being presented for any improper purpose, such as to harass, cause unnecessary delay, or needlessly increase the cost of dispute resolution; (ii) the claims and other legal contentions are warranted by existing law or by a nonfrivolous argument for extending, modifying, or reversing existing law or for establishing new law; and (iii) the factual contentions have evidentiary support or, if specifically so identified, will likely have evidentiary support after a reasonable opportunity for further investigation or discovery. The Arbitrator shall be authorized to afford any relief or impose any sanctions available under Federal Rule of Civil Procedure 11 or any applicable state law for either party’s violation of this requirement. + +**12.5. OPTION AND PROCEDURE TO OPT OUT OF ARBITRATION** + +**IF YOU HAVE NOT PREVIOUSLY AGREED TO AN ARBITRATION PROVISION IN CONNECTION WITH YOUR USE OF OUR SERVICE, YOU MAY OPT OUT OF THE AGREEMENT TO ARBITRATE BY FOLLOWING THE INSTRUCTIONS BELOW. IF YOU DO NOT OPT-OUT, THE ARBITRATION PROVISIONS WILL APPLY RETROACTIVELY TO ALL CLAIMS YOU MAY POSSESS, WHETHER ASSERTED TO DATE OR NOT.** + +**IF YOU DO NOT WISH TO AGREE TO THE PROVISIONS OF THIS AGREEMENT REQUIRING ARBITRATION AND CLASS ACTION WAIVER AND YOU HAVE NOT PREVIOUSLY AGREED TO AN ARBITRATION PROVISION IN CONNECTION WITH YOUR USE OF OUR SERVICE, YOU MUST, WITHIN THIRTY (30) DAYS OF ENTERING THIS AGREEMENT, SEND AN E-MAIL FROM THE EMAIL ADDRESS ASSOCIATED WITH YOUR ACCOUNT to help@manifold.markets including THE WORDS “OPT OUT” IN THE SUBJECT LINE AND IN THE BODY OF THE EMAIL, YOUR FULL NAME, ADDRESS, Manifold ACCOUNT USER ID NUMBER, AND A STATEMENT THAT YOU WISH TO OPT-OUT OF ARBITRATION.** + +- \***\*EMAILS SENT TO OPT OUT AFTER THE 30 DAY PERIOD SHALL NOT BE EFFECTIVE.\*\*\*** + +Whether to agree to arbitration is an important decision. It is your decision to make and you are not required to rely solely on the information provided in these Terms and Conditions. You should take reasonable steps to conduct further research and to consult with counsel (at your expense) regarding the consequences of your decision. + +**12.6. LOCATION OF ARBITRATION & APPLICABLE RULES** + +You and Manifold agree that: + +(a) provided the Dispute involves *solely individual claims* for damages in accordance with the Agreement, the American Arbitration Association (“AAA”) will administer the arbitration under its Consumer Rules in effect at the time arbitration is sought, available at [www.adr.org](https://www.google.com/url?q=http://www.adr.org/&sa=D&source=editors&ust=1726521610021839&usg=AOvVaw3YNPaWtZ6mrDKE9sNikiGm), and the arbitration shall be conducted via telephone or other remote electronic means.  However, the parties agree: to select an arbitrator pursuant to the procedure set forth in R-12 of the Commercial Part Rules (instead of the Consumer Part Rules); that the AAA will only include arbitrators from the AAA National Registry Commercial Part list on the parties’ arbitrator selection list (instead of the Consumer list); and the AAA will only include arbitrators who are practicing attorneys or retired federal court judges who have at least ten years of substantive expertise in litigating and resolving of complex business disputes, including motions to compel arbitration and litigation or adjudication regarding whether disputes are arbitrable.‍ + +(b) You and Manifold agree that the arbitration of any Dispute shall proceed on an individual basis and neither you nor Manifold may bring a claim as a part of a Collective Arbitration. + +(i) Without limiting the generality of the Agreement, and as an example only, a claim to resolve a Dispute against Manifold will be deemed a Collective Arbitration if: (a) two (2) or more similar claims for arbitration are pending concurrently by or on behalf of one or more claimants; and (b) counsel for the two or more claimants are the same, share fees or coordinate in any way across the arbitrations.‍ + +(c) If, notwithstanding the terms of this Agreement, to the extent a party attempts to assert any claims or seek relief on behalf of or for the use of other persons or a class under any theory, or in which injunctive relief is sought by a party that would significantly impact other Manifold users or the operation of the Platform, the Commercial Arbitration Rules shall apply and, as appropriate, the Supplementary Rules for Class Action of the AAA may apply. + +(d) the applicable AAA rules will govern payment of all arbitration fees. + +(e) except as otherwise may be required by the AAA Rules, the arbitration will be held in Wilmington, Delaware. + +(f) the arbitrator shall be authorized to award any remedies, including injunctive relief, that would be available in an individual lawsuit and that are not waivable under applicable law, however, any relief must be individualized to you and shall not affect any other persons. + +(g) except as and to the extent otherwise may be required by law, the arbitration proceeding, pleadings, and any award shall be confidential, except as may be necessary in connection with a court application for a preliminary remedy, a judicial challenge to an award or its enforcement. + +**12.7. WAIVER OF CLASS RELIEF AND COLLECTIVE ACTION** + +TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, NEITHER YOU NOR Manifold SHALL BE ENTITLED TO BRING, CONSOLIDATE, JOIN OR COORDINATE DISPUTES BY OR AGAINST OTHER INDIVIDUALS OR ENTITIES, OR PARTICIPATE IN ANY COLLECTIVE ARBITRATION OR ARBITRATE OR LITIGATE ANY DISPUTE IN A REPRESENTATIVE CAPACITY. YOU MAY ONLY ARBITRATE OR LITIGATE ON AN INDIVIDUAL BASIS ONLY AND FOR YOUR OWN LOSSES ONLY. UNDER THIS AGREEMENT, YOU MAY NOT PROCEED IN ARBITRATION OR COURT AS A CLASS REPRESENTATIVE, MEMBER OR PART OF ANY PROPOSED CLASS, COLLECTIVE ACTION OR MASS ARBITRATION, PRIVATE ATTORNEY GENERAL SUIT OR ANY REPRESENTATIVE PROCEEDING, OR OTHERWISE SEEK TO RECOVER ON BEHALF OF OTHERS OR FOR THE BENEFIT OF OTHERS IN ANY TYPE OF CLAIM OR ACTION. YOU AND Manifold ARE EACH WAIVING RESPECTIVE RIGHTS TO PARTICIPATE IN A CLASS ACTION. BY ACCEPTING THIS AGREEMENT, YOU GIVE UP YOUR RIGHT TO PARTICIPATE IN ANY PAST, PENDING OR FUTURE CLASS ACTION OR ANY OTHER CONSOLIDATED OR REPRESENTATIVE PROCEEDING, INCLUDING ANY EXISTING AS OF THE DATE YOU AGREED TO THIS AGREEMENT. YOU ALSO EXPRESSLY WAIVE AND RELEASE, TO THE FULLEST EXTENT AVAILABLE AT LAW, ANY CLAIM PURPORTED TO BE ASSERTED BY ANY OTHER PERSON ON YOUR BEHALF OR FOR YOUR USE OR BENEFIT. + +**12.8. WAIVER OF JURY TRIAL.** + +EACH PARTY HEREBY WAIVES, TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, ANY RIGHT IT MAY HAVE TO A TRIAL BY JURY IN ANY LEGAL PROCEEDING DIRECTLY OR INDIRECTLY ARISING OUT OF OR RELATING TO THE PLATFORM OR SERVICES OR ANY TRANSACTIONS BETWEEN THE PARTIES, WHETHER BASED ON CONTRACT, TORT, OR ANY OTHER THEORY. + +**12.9. SEVERABILITY** + +This Agreement applies solely to the extent permitted by law. If for any reason any provision of this Agreement or portion thereof, is found by a court of competent jurisdiction to be unlawful, void, or unenforceable, that part of this Agreement will be deemed severable and shall not affect the validity and enforceability of the remainder of this Agreement which shall continue in full force and effect. The parties agree further that if any part of this Agreement is deemed to be illegal, invalid, void or for any reason unenforceable, that the invalid or unenforceable provision should, to the greatest extent possible, be deemed superseded by a valid, enforceable provision that most closely matches the intent of the original provision. + +‍ + +**13. DEACTIVATION / LIMITATION / SUSPENSION OF ACCOUNT** + +13.1. Manifold hereby reserves the right to deactivate, limit, or suspend your Customer Account for any reason whatsoever at any time without notifying you. + +13.2. Without limiting Section 12.1, we hereby reserve the right, at our sole discretion, to deactivate or suspend your Customer Account (notwithstanding any other provision contained in these Terms) where we have reason to believe that you have engaged or are likely to engage in any of the following activities: + +(a) you breached, or assisted another party to breach, any provision of these Terms and Conditions or the Sweepstakes Rules, or we have a reasonable ground to suspect such breach; + +(b) you have more than one Customer Account on any Platform; + +(c) the name registered on your Customer Account does not match the name on the financial/bank account and/or the credit/debit card(s) used to make purchases on the said Customer Account; + +(d) your communication with us through email, social media, or other means consists of harassment or offensive behavior or comments, including (but not limited to) threatening, derogatory, abusive or defamatory statements or remarks, libel, and/or publishing publicly such statements about the Company or individuals associated with the Company; + +(e) your Customer Account is deemed to be an Inactive Account; + +(f) you become bankrupt; + +(g) you provide incorrect or misleading information while registering or verifying a Customer Account including, but not limited to, name, state of residence, date of birth and/or any other identity details; + +(h) your identity cannot be verified; + +(i) you attempt to use your Customer Account through a VPN, proxy or similar service that masks or manipulates the identification of your real location, or by otherwise providing false or misleading information regarding your citizenship, location or place of residence, or by playing Games using the website through a third party or on behalf of a third party; + +(j) you are not over 18 years of age; + +(k) you are located in or participated from an Excluded Territory; + +(l) you have allowed or permitted (whether intentionally or unintentionally) someone else to participate using your Customer Account; + +(m) you have played in tandem with other Player(s) as part of a club, group, etc., or played the Games in a coordinated manner with other Player(s) involving the same (or materially the same) selections; + +(n) where Manifold has received a “charge back”, claim or dispute and/or a “return” notification via a payment mechanism used on your financial/bank account or online wallet; + +(o) you have failed our due diligence procedures, or are found to be colluding, cheating, money laundering or undertaking any kind of fraudulent activity; + +(p) it is determined by Manifold that you have employed or made use of any system (including, but not limited to, machines, computers, software or other automated systems such as bots) designed specifically to gain an unfair advantage and/or intentionally exploit mispriced markets that may be available occasionally on the Platform; or + +(q) it is determined by Manifold that you intentionally and knowingly exploited (or attempted to exploit) system or data errors by making predictions on obviously incorrect markets, or otherwise attempted to manipulate the price of any particular market, or if Manifold determines, in its sole discretion that you have attempted to manipulate or exploit bonuses- referral, mail-in, or otherwise. + +13.3. If Manifold deactivates or suspends your Customer Account for any of the reasons referred to in Section 12.2 above, you will be liable for any and all claims, losses, liabilities, damages, costs and expenses incurred or suffered by Manifold (together **“Claims”** ) arising therefrom and you will indemnify and hold Manaplay LLC. harmless on demand for such Claims. + +13.4. If we have reasonable grounds to believe that you have participated in any of the activities set out in Section 12.2 above, then we reserve the right to withhold all or part of the balance and/or recover from your Customer Account any Prizes or virtual funds that are attributable to any of the activities contemplated in Section 12.2. In such circumstances, your details may be passed on to any applicable regulatory authority, regulatory body or any other relevant external third parties. + +13.5. If your Customer Account is confirmed to have been deactivated due to fraudulent or illegal activity by you, the redeemed value of any Prizes credited to your Customer Account will be forfeited. + +13.6. If your Customer Account is deactivated, limited, or suspended you, and other members of your household, are not permitted to open a new account, unless expressly authorized by Manifold in writing. + +13.7. The rights set out in this Section 12 are without prejudice to any other rights that we may have against you under these Terms and Conditions or otherwise. + +**14. INDEMNITY AND LIMITATION OF LIABILITY** + +**Indemnity** + +14.1. YOU HEREBY AGREE TO INDEMNIFY AND HOLD HARMLESS (INCLUDING REASONABLE ATTORNEY’S FEES AND COSTS OF SUIT) Manifold, ITS DIRECTORS, OFFICERS, EMPLOYEES, SHAREHOLDERS, AGENTS, AFFILIATES, CONSULTANTS, SUPPLIERS, ADVERTISERS, PAYMENT SERVICES PROMOTERS, PARTNERS, AND THEIR AGENTS, EMPLOYEES, OFFICERS, AND DIRECTORS, OUR ULTIMATE PARENT AND PARENT COMPANIES AND ANY OF OUR OR THEIR SUBSIDIARIES AGAINST ANY AND ALL COSTS, EXPENSES, LIABILITIES AND DAMAGES (WHETHER DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, EXEMPLARY OR PUNITIVE OR OTHER) ARISING FROM ANY PARTICIPATION BY YOU, INCLUDING WITHOUT LIMITATION: + +(a) VISITING, USE OR RE-USE OF THE PLATFORM; + +(b)USE OR RE-USE OF THE PLATFORM BY MEANS OF TELECOMMUNICATION SERVICES; + +(c) RE-USE OF ANY MATERIALS AT, OR OBTAINED FROM, THE PLATFORM OR ANY OTHER SOURCE WHATSOEVER; + +(d) ENTRY TO, OR USE OR RE-USE OF THE PLATFORM SERVERS; + +(e) FACILITATING OR MAKING A PAYMENT INTO YOUR CUSTOMER ACCOUNT; + +(f) PLAYING THE GAMES THROUGH ANY DELIVERY MECHANISM OFFERED; AND + +(g) ACCEPTANCE AND USE OF ANY PRIZE. + +**Limitation of Liability** + +14.2. BY ACCESSING, USING OR DOWNLOADING THE SERVICE, YOU ACKNOWLEDGE AND AGREE THAT SUCH USE IS AT YOUR OWN RISK AND THAT NONE OF THE PARTIES INVOLVED IN CREATING, PRODUCING, OR DELIVERING THE SERVICE OR Manifold, OR ANY OF ITS AFFILIATES, SUBSIDIARIES OR ANY OF THEIR EMPLOYEES, AGENTS OR CONTRACTORS (COLLECTIVELY “RELEASED PARTIES”) ARE LIABLE FOR ANY DIRECT, INCIDENTAL, CONSEQUENTIAL, INDIRECT, SPECIAL, OR PUNITIVE DAMAGES, OR ANY OTHER LOSSES, COSTS, OR EXPENSES OF ANY KIND (INCLUDING, WITHOUT LIMITATION, LOST PROFITS, LOSS OF DATA, LEGAL FEES, EXPERT FEES, COST OF PROCURING SUBSTITUTE SERVICES, LOST OPPORTUNITY, OR OTHER DISBURSEMENTS) WHICH MAY ARISE, DIRECTLY OR INDIRECTLY, THROUGH THE ACCESS TO, USE OF, AND/OR RELIANCE ON ANY MATERIAL OR CONTENT ON THE SERVICE OR PLATFORM, OR BROWSING OF THE SERVICE OR THROUGH YOUR DOWNLOADING OF ANY MATERIALS, DATA, TEXT, IMAGES, VIDEO OR AUDIO FROM THE SERVICE OR WEBSITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +14.3. TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT WILL THE TOTAL LIABILITY OF THE RELEASED PARTIES TO YOU IN CONTRACT, TORT, NEGLIGENCE OR OTHERWISE, FOR ANY LOSS OR DAMAGE WHATSOEVER ARISING FROM ANY CAUSE, WHETHER DIRECT OR INDIRECT, OR FOR ANY AMOUNTS (EVEN WHERE WE HAVE BEEN NOTIFIED BY YOU OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE) EXCEED THE VALUE OF THE Mana PURCHASES YOU HAVE MADE VIA YOUR CUSTOMER ACCOUNT IN RESPECT OF THE RELEVANT GAME OR PRODUCT THAT GAVE RISE TO THE RELEVANT LIABILITY. THE RELEASED PARTIES ACCEPT NO LIABILITY FOR ANY LOSS OR DAMAGE WHATSOEVER ARISING BEYOND THIS AMOUNT WHICH IS DEEMED OR ALLEGED TO HAVE ARISEN OUT OF OR IN CONNECTION WITH YOUR PARTICIPATION. THIS INCLUDES, WITHOUT LIMITATION, DELAYS OR INTERRUPTIONS IN OPERATION OR TRANSMISSION, LOSS OR CORRUPTION OF DATA, COMMUNICATION OR LINES FAILURE, ANY PERSON’S MISUSE OF THE GAMES OR THE PLATFORM OR THEIR CONTENT OR ANY ERRORS OR OMISSIONS IN THE CONTENT OF THE GAMES OR THE PLATFORM. + +‍ + +**14.4. Statute of Limitations** + +You and Manifold agree that any claims, regardless of form, arising out of or related to the Platform (including the Service) or these Terms and Conditions or Privacy Policy must BE FILED within ONE (1) YEAR of the action, omission, event or occurrence giving rise to the claim or suit, after which such claims will be time-barred and prohibited, without regard to any longer period of time which may be provided by any period of limitation or repose by law or statute. + +**14.5. Negligence** + +NOTHING IN THESE Terms and Conditions WILL OPERATE SO AS TO EXCLUDE ANY LIABILITY OF Manaplay LLC. FOR FRAUD, DEATH OR PERSONAL INJURY THAT IS CAUSED BY Manaplay LLC’S NEGLIGENCE. + +**15. Manaplay LLC. NOT A FINANCIAL INSTITUTION** + +**Interest** + +14.1. You will not receive any interest on outstanding Prizes and you will not treat Manifold as a financial institution. + +**No legal or tax advice** + +15.2. Manifold does not provide advice regarding tax and/or legal matters. Players who wish to obtain advice regarding tax and legal matters are advised to contact appropriate experts and advisors in the field. + +**No financial arbitrage** + +15.3. You are strictly prohibited from utilizing the Service and the systems of Manifold to facilitate arbitrage through currency exchange transactions. Where Manifold deems that you have deliberately used the systems for financial gain through arbitrage, any gains will be forfeited and deducted from your balance without warning or notification. + +**16. OTHER** + +**Entire Agreement** + +16.1. These Terms and Conditions, along with the Binding Arbitration and Class Action Waiver Agreement, constitute the entire agreement between you and us with respect to your use of the Platform or Service and supersede all prior agreements or contemporaneous communications and proposals, whether electronic, oral or written. + +**Survival** + +16.2. SECTIONS 4, 5, 8, 11, 13, 15.3 and 15.13 SHALL BE DEEMED TO SURVIVE THE TERMINATION OF THESE Terms and Conditions OR YOUR ACCOUNT FOR ANY REASON. + +**Tax** + +16.3. You are solely responsible for any state, local or federal taxes which may apply to Your use of the Service. + +**Force Majeure** + +16.4. Manaplay LLC. will not be liable or responsible for any failure to perform, or delay in performance of, any of our obligations under these Terms and Conditions that is caused by events outside of our reasonable control, including but not limited to an act of God, hurricane, war, fire, riot, earthquake, weather, pandemic or endemic, terrorism, act of public enemies, strikes, labor shortage, actions of governmental authorities or other *force majeure* event. + +**No agency** + +16.5. Nothing in these Terms and Conditions will be construed as creating any agency, partnership, trust arrangement, fiduciary relationship, or any other form of joint enterprise between you and us. + +**Severability** + +16.6. If any of the Terms and Conditions are determined by any competent authority to be invalid, unlawful, or unenforceable to any extent, such term, condition or provision will, to that extent, be severed from these Terms and Conditions. All remaining terms, conditions and provisions will continue to be valid to the fullest extent permitted by law. In such cases, the part deemed invalid or unenforceable will be amended in a manner consistent with the applicable law to reflect, as closely as possible, the intent of the original provision. + +**Explanation of Terms and Conditions** + +16.7. We consider these Terms and Conditions to be open and fair. If you need any explanation regarding these Terms and Conditions or any other part of our Service contact help@manifold.markets + +16.8. The Terms and Conditions prevail over any communication via email or chat. + +16.9. All correspondence between you and us may be recorded. + +**Assignment** + +16.10. These Terms and Conditions are personal to you, and are not assignable, transferable, or sub-licensable by you except with our prior written consent. We reserve the right to assign, transfer or delegate any of our rights and obligations hereunder to any third party without notice to you. + +**Business Transfers** + +16.11. In the event of a change of control, merger, acquisition, or sale of assets of Manaplay LLC., your Customer Account and associated data may be part of the assets transferred to the purchaser or acquiring party. In such an event, we will provide you with notice via email or via our Platform explaining your options regarding the transfer of your Customer Account. + +**Language** + +16.12. These Terms and Conditions may be published in several languages for information purposes and ease of access by players, but will all reflect the same principles. It is only the English version that is the legal basis of the relationship between you and us and in case of any discrepancy between a non-English version and the English version of these Terms and Conditions, the English version will prevail. + +**Applicable Law, Jurisdiction and Venue** + +16.13. All issues and questions concerning the construction, validity, interpretation and enforceability of these Terms and Conditions, shall be governed by, and construed in accordance with, the laws of the State of Delaware, without giving effect to any choice of law or conflict of law rules (whether of the State of Delaware or any other jurisdiction), which would cause the application of the laws of any jurisdiction other than the State of Delaware. To the extent any lawsuit is filed by the Parties in the limited circumstances allowed by the Binding Arbitration and Class Action Waiver Agreement, the parties agree that such litigation shall be subject to the exclusive venue of state or federal courts located in Wilmington, Delaware, and the parties further agree that they are subject to the specific jurisdiction of such courts and waive any right to contest jurisdiction or transfer venue. diff --git a/web/components/about-manifold.tsx b/web/components/about-manifold.tsx new file mode 100644 index 0000000000..5eead0b794 --- /dev/null +++ b/web/components/about-manifold.tsx @@ -0,0 +1,27 @@ +import { TWOMBA_ENABLED } from 'common/envs/constants' + +type AboutManifoldProps = { + className?: string +} + +export const AboutManifold = ({ className = '' }: AboutManifoldProps) => { + return ( +
+
+ Manifold is a social prediction market with real-time odds on wide + ranging news such as politics, tech, sports and more! +
+ {TWOMBA_ENABLED ? ( +
+ Participate for free in sweepstakes markets to win sweepcash which can + be withdrawn for real money!{' '} +
+ ) : ( +
+ Bet against others on our play money markets to progress up the + leaderboards and contribute to the market's probability! +
+ )} +
+ ) +} diff --git a/web/components/bet/bet-dialog.tsx b/web/components/bet/bet-dialog.tsx index 16ab7ef7df..d13dc6f69e 100644 --- a/web/components/bet/bet-dialog.tsx +++ b/web/components/bet/bet-dialog.tsx @@ -9,7 +9,7 @@ import { } from 'common/contract' import { Col } from '../layout/col' import { Modal, MODAL_CLASS } from '../layout/modal' -import { BuyPanel } from './bet-panel' +import { BinaryOutcomes, BuyPanel } from './bet-panel' import { Subtitle } from '../widgets/subtitle' import { getDefaultSort, MultiSort } from 'common/answer' import Link from 'next/link' @@ -26,8 +26,27 @@ export function BetDialog(props: { open: boolean setOpen: (open: boolean) => void trackingLocation: string + initialOutcome?: BinaryOutcomes + binaryPseudonym?: { + YES: { + pseudonymName: string + pseudonymColor: string + } + NO: { + pseudonymName: string + pseudonymColor: string + } + } + questionPseudonym?: string }) { - const { contract, open, setOpen, trackingLocation } = props + const { + contract, + open, + setOpen, + trackingLocation, + initialOutcome, + questionPseudonym, + } = props const { question } = contract return ( @@ -40,14 +59,17 @@ export function BetDialog(props: { )} > - {question} + + {questionPseudonym ?? question} + setTimeout(() => setOpen(false), 500)} location={trackingLocation} inModal={true} - initialOutcome="YES" + initialOutcome={initialOutcome ?? 'YES'} alwaysShowOutcomeSwitcher + pseudonym={props.binaryPseudonym} /> diff --git a/web/components/bet/bet-panel.tsx b/web/components/bet/bet-panel.tsx index 5b01e86070..e8bd9432a1 100644 --- a/web/components/bet/bet-panel.tsx +++ b/web/components/bet/bet-panel.tsx @@ -90,6 +90,16 @@ export function BuyPanel(props: { alwaysShowOutcomeSwitcher?: boolean feedReason?: string children?: React.ReactNode + pseudonym?: { + YES: { + pseudonymName: string + pseudonymColor: string + } + NO: { + pseudonymName: string + pseudonymColor: string + } + } }) { const { contract, @@ -98,7 +108,9 @@ export function BuyPanel(props: { inModal, alwaysShowOutcomeSwitcher, children, + pseudonym, } = props + const user = useUser() const isPseudoNumeric = contract.outcomeType === 'PSEUDO_NUMERIC' const isStonk = contract.outcomeType === 'STONK' @@ -178,7 +190,7 @@ export function BuyPanel(props: { {children} @@ -224,6 +237,16 @@ export const BuyPanelBody = (props: { feedReason?: string panelClassName?: string children?: React.ReactNode + pseudonym?: { + YES: { + pseudonymName: string + pseudonymColor: string + } + NO: { + pseudonymName: string + pseudonymColor: string + } + } }) => { const { contract, @@ -506,6 +529,9 @@ export const BuyPanelBody = (props: { ? { Buy: 'YES', Short: 'NO' } : { Yes: 'YES', No: 'NO' } + const { pseudonymName, pseudonymColor } = + props.pseudonym?.[outcome as 'YES' | 'NO'] ?? {} + return ( <> @@ -513,7 +539,12 @@ export const BuyPanelBody = (props: { {children} {(isAdvancedTrader || alwaysShowOutcomeSwitcher) && ( - +
Outcome
{isAdvancedTrader && ( @@ -663,6 +695,7 @@ export const BuyPanelBody = (props: { unfilledBets={unfilledBets} balanceByUserId={balanceByUserId} outcome={outcome} + pseudonym={props.pseudonym} /> )} @@ -682,6 +715,7 @@ export const BuyPanelBody = (props: { disabled={betDisabled} size="xl" color={ + pseudonymColor ?? binaryMCColors?.[outcome == 'YES' ? 0 : 1] ?? (outcome === 'NO' ? 'red' : 'green') } @@ -693,7 +727,7 @@ export const BuyPanelBody = (props: { )} or ${formatOutcomeLabel(contract, 'NO')}` ) : isStonk ? ( - {formatOutcomeLabel(contract, outcome)}{' '} + {formatOutcomeLabel(contract, outcome, pseudonymName)}{' '} {capitalize(TRADE_TERM)}{' '} {binaryMCOutcomeLabel ?? - formatOutcomeLabel(contract, outcome)}{' '} + formatOutcomeLabel( + contract, + outcome, + pseudonymName + )}{' '} to win{' '} b.answerId === multiProps?.answerToBuy?.id )} answer={multiProps?.answerToBuy} + pseudonym={props.pseudonym} /> )} diff --git a/web/components/bet/bet-slider.tsx b/web/components/bet/bet-slider.tsx index 18975c4225..d06e9e450d 100644 --- a/web/components/bet/bet-slider.tsx +++ b/web/components/bet/bet-slider.tsx @@ -16,20 +16,20 @@ export const SMALL_SLIDER_VALUES = [ export const SMALL_SLIDER_VALUE_LABELS = [1, 100, 1000] -export const MAX_CASH_SMALL_SLIDER_VALUE = 100 -export const MAX_CASH_LARGE_SLIDER_VALUE = 500 +export const MAX_CASH_SMALL_SLIDER_VALUE = 500 +export const MAX_CASH_LARGE_SLIDER_VALUE = 1000 export const CASH_SMALL_SLIDER_VALUES = SMALL_SLIDER_VALUES.filter( (a) => a <= MAX_CASH_SMALL_SLIDER_VALUE ) -export const CASH_SMALL_SLIDER_VALUE_LABELS = [1, 10, 100] +export const CASH_SMALL_SLIDER_VALUE_LABELS = [1, 100, 500] export const CASH_LARGE_SLIDER_VALUES = LARGE_SLIDER_VALUES.filter( (a) => a <= MAX_CASH_LARGE_SLIDER_VALUE ) -export const CASH_LARGE_SLIDER_VALUE_LABELS = [1, 100, 500] +export const CASH_LARGE_SLIDER_VALUE_LABELS = [1, 100, 1000] export const BetSlider = (props: { amount: number | undefined @@ -39,6 +39,7 @@ export const BetSlider = (props: { disabled?: boolean className?: string token?: InputTokenType + sliderColor?: string }) => { const { amount, @@ -47,6 +48,7 @@ export const BetSlider = (props: { binaryOutcome, disabled, className, + sliderColor, } = props const token = props.token ?? 'M$' @@ -75,7 +77,7 @@ export const BetSlider = (props: { label: formatWithToken({ amount: a, token: token, - short: token === 'CASH' ? false : true, + short: true, }), } }) @@ -95,7 +97,9 @@ export const BetSlider = (props: { max={maxSliderIndex} marks={marks} color={ - binaryOutcome === 'YES' + sliderColor + ? (sliderColor as any) + : binaryOutcome === 'YES' ? 'green' : binaryOutcome === 'NO' ? 'red' diff --git a/web/components/bet/limit-order-panel.tsx b/web/components/bet/limit-order-panel.tsx index b7844613a3..ec7986816e 100644 --- a/web/components/bet/limit-order-panel.tsx +++ b/web/components/bet/limit-order-panel.tsx @@ -61,6 +61,16 @@ export default function LimitOrderPanel(props: { onBuySuccess?: () => void className?: string outcome: 'YES' | 'NO' | undefined + pseudonym?: { + YES: { + pseudonymName: string + pseudonymColor: string + } + NO: { + pseudonymName: string + pseudonymColor: string + } + } }) { const { contract, @@ -70,7 +80,10 @@ export default function LimitOrderPanel(props: { user, outcome, onBuySuccess, + pseudonym, } = props + const { pseudonymName, pseudonymColor } = + pseudonym?.[outcome as 'YES' | 'NO'] ?? {} const isBinaryMC = isBinaryMulti(contract) const binaryMCColors = isBinaryMC ? (contract as MultiContract).answers.map(getAnswerColor) @@ -88,7 +101,9 @@ export default function LimitOrderPanel(props: { } const isPseudoNumeric = contract.outcomeType === 'PSEUDO_NUMERIC' - const defaultBetAmount = 1000 + const isCashContract = contract.token === 'CASH' + const defaultBetAmount = isCashContract ? 50 : 1000 + const [betAmount, setBetAmount] = useState( defaultBetAmount ) @@ -267,7 +282,7 @@ export default function LimitOrderPanel(props: { const returnPercent = formatPercent(currentReturn) const totalFees = getFeeTotal(fees) - const isCashContract = contract.token === 'CASH' + const hideYesNo = isBinaryMC || !!pseudonym return ( <> @@ -296,6 +311,7 @@ export default function LimitOrderPanel(props: { disabled={isSubmitting} showSlider token={isCashContract ? 'CASH' : 'M$'} + sliderColor={pseudonymColor} />
@@ -397,9 +413,9 @@ export default function LimitOrderPanel(props: { {isPseudoNumeric ? ( ) : ( - !isBinaryMC && + !hideYesNo && )}{' '} - {isBinaryMC ? 'Filled' : 'filled'} now + {hideYesNo ? 'Filled' : 'filled'} now
- Max{' '} - {!isBinaryMC && }{' '} + Max {!hideYesNo && }{' '} payout )} @@ -458,7 +473,10 @@ export default function LimitOrderPanel(props: { {error} diff --git a/web/components/cashout/select-cashout-options.tsx b/web/components/cashout/select-cashout-options.tsx index fd2deedf73..4933ad059d 100644 --- a/web/components/cashout/select-cashout-options.tsx +++ b/web/components/cashout/select-cashout-options.tsx @@ -18,6 +18,7 @@ import { getNativePlatform } from 'web/lib/native/is-native' import { CashoutPagesType } from 'web/pages/redeem' import { ManaCoin } from 'web/public/custom-components/manaCoin' import { CoinNumber } from '../widgets/coin-number' +import { formatMoney, formatMoneyUSD, formatSweepies } from 'common/util/format' export function SelectCashoutOptions(props: { user: User @@ -34,14 +35,18 @@ export function SelectCashoutOptions(props: { return ( - +
Get Mana
- Redeem your {SWEEPIES_NAME} for mana. You'll get{' '} - {CASH_TO_MANA_CONVERSION_RATE} mana for every 1 {SWEEPIES_NAME}. + Redeem your {SWEEPIES_NAME} at{' '} + + {formatSweepies(1)} {'→'}{' '} + {formatMoney(CASH_TO_MANA_CONVERSION_RATE)} + + , no fees included!
@@ -71,7 +76,7 @@ export function SelectCashoutOptions(props: { {!isNativeIOS && ( - + donate )} - + donate
Redeem for USD
- Redeem your {SWEEPIES_NAME} for USD with a{' '} - {CHARITY_FEE * 100}% fee. + Redeem your {SWEEPIES_NAME} at{' '} + + {formatSweepies(1)} {'→'} {formatMoneyUSD(1)} + + , minus a {CHARITY_FEE * 100}% fee.
diff --git a/web/components/charts/contract/depth-chart.tsx b/web/components/charts/contract/depth-chart.tsx index e9a387d922..71b91df058 100644 --- a/web/components/charts/contract/depth-chart.tsx +++ b/web/components/charts/contract/depth-chart.tsx @@ -12,6 +12,16 @@ import { curveStepAfter } from 'd3-shape' import { axisBottom, axisRight } from 'd3-axis' import { formatLargeNumber } from 'common/util/format' import { Answer } from 'common/answer' +import { DEM_COLOR, REP_COLOR } from 'web/components/usa-map/state-election-map' + +function getColor(color: string) { + if (color === 'azure') { + return DEM_COLOR + } else if (color === 'sienna') { + return REP_COLOR + } + return color +} export function DepthChart(props: { contract: BinaryContract | StonkContract | CPMMMultiContract @@ -20,8 +30,18 @@ export function DepthChart(props: { noBets: LimitBet[] width: number height: number + pseudonym?: { + YES: { + pseudonymName: string + pseudonymColor: string + } + NO: { + pseudonymName: string + pseudonymColor: string + } + } }) { - const { contract, answer, yesBets, noBets, width, height } = props + const { contract, answer, yesBets, noBets, width, height, pseudonym } = props const yesData = cumulative(yesBets) const noData = cumulative(noBets) @@ -53,10 +73,13 @@ export function DepthChart(props: { return null } + const yesColor = pseudonym?.YES?.pseudonymColor ?? '#11b981' + const noColor = pseudonym?.NO?.pseudonymColor ?? '#ef4444' + return ( xScale(p.x)} py0={yScale(0)} @@ -64,7 +87,7 @@ export function DepthChart(props: { curve={curveStepAfter} /> xScale(p.x)} py0={yScale(0)} diff --git a/web/components/comments/comment-actions.tsx b/web/components/comments/comment-actions.tsx index a381898f48..7752a8b14b 100644 --- a/web/components/comments/comment-actions.tsx +++ b/web/components/comments/comment-actions.tsx @@ -66,7 +66,7 @@ export function CommentActions(props: { size={'xs'} > - + {diff != 0 && ( {Math.round(Math.abs(diff))} )} diff --git a/web/components/comments/comment-header.tsx b/web/components/comments/comment-header.tsx index 3c5c13d171..b63f9c9da7 100644 --- a/web/components/comments/comment-header.tsx +++ b/web/components/comments/comment-header.tsx @@ -74,15 +74,17 @@ export function FeedCommentHeader(props: { isRepost, betOrderAmount, betLimitProb, + betToken, } = comment - const isCashContract = contract.token === 'CASH' + const betOnCashContract = betToken === 'CASH' const marketCreator = contract.creatorId === userId - const { bought, money } = getBoughtMoney(betAmount, isCashContract) + const { bought, money } = getBoughtMoney(betAmount, betOnCashContract) const shouldDisplayOutcome = betOutcome && !answerOutcome const isReplyToBet = betAmount !== undefined const commenterIsBettor = commenterAndBettorMatch(comment) const isLimitBet = betOrderAmount !== undefined && betLimitProb !== undefined + return ( @@ -104,7 +106,7 @@ export function FeedCommentHeader(props: { {' '} )} diff --git a/web/components/contract/contract-overview.tsx b/web/components/contract/contract-overview.tsx index 873040e1a5..993fbf65fb 100644 --- a/web/components/contract/contract-overview.tsx +++ b/web/components/contract/contract-overview.tsx @@ -74,6 +74,7 @@ import { import { useLiveContractWithAnswers } from 'web/hooks/use-contract' import { VerifyButton } from '../twomba/toggle-verify-callout' import { InBeta } from '../twomba/toggle-verify-callout' +import { LocationMonitor } from '../gidx/location-monitor' export const ContractOverview = memo( (props: { @@ -173,7 +174,7 @@ export const BinaryOverview = (props: { chartAnnotations: ChartAnnotation[] }) => { const { contract, resolutionRating } = props - + const [showLocationPane, setShowLocationPane] = useState(false) const user = useUser() const [showZoomer, setShowZoomer] = useState(false) @@ -230,8 +231,13 @@ export const BinaryOverview = (props: { pointerMode={pointerMode} chartAnnotations={chartAnnotations} /> - - {tradingAllowed(contract) && ( + + {tradingAllowed(contract) && !showLocationPane && ( )} diff --git a/web/components/contract/contract-table-action.tsx b/web/components/contract/contract-table-action.tsx index 7c44c3e9ab..7bb0dc2349 100644 --- a/web/components/contract/contract-table-action.tsx +++ b/web/components/contract/contract-table-action.tsx @@ -17,6 +17,7 @@ import { track } from 'web/lib/service/analytics' import { PollPanel } from '../poll/poll-panel' import { TRADE_TERM } from 'common/envs/constants' import { capitalize } from 'lodash' +import { BinaryOutcomes } from '../bet/bet-panel' export function Action(props: { contract: Contract }) { const { contract } = props @@ -68,8 +69,12 @@ const VoteButton = (props: { contract: Contract }) => { return <> } -export function BetButton(props: { contract: Contract; user?: User | null }) { - const { contract } = props +export function BetButton(props: { + contract: Contract + user?: User | null + initialOutcome?: BinaryOutcomes +}) { + const { contract, initialOutcome } = props const user = useUser() const [open, setOpen] = useState(false) const [openMC, setOpenMC] = useState(false) @@ -114,6 +119,7 @@ export function BetButton(props: { contract: Contract; user?: User | null }) { open={open} setOpen={setOpen} trackingLocation="contract table" + initialOutcome={initialOutcome} /> )} diff --git a/web/components/contract/contract-tabs.tsx b/web/components/contract/contract-tabs.tsx index a43110d6cd..7ae29c48b3 100644 --- a/web/components/contract/contract-tabs.tsx +++ b/web/components/contract/contract-tabs.tsx @@ -45,7 +45,8 @@ import { api } from 'web/lib/api/api' import { TRADE_TERM } from 'common/envs/constants' export function ContractTabs(props: { - contract: Contract + mainContract: Contract + liveContract: Contract bets: Bet[] comments: ContractComment[] userPositionsByOutcome: ContractMetricsByOutcome @@ -62,7 +63,8 @@ export function ContractTabs(props: { appRouter?: boolean }) { const { - contract, + mainContract, + liveContract, comments, bets, replyTo, @@ -115,7 +117,7 @@ export function ContractTabs(props: { title: commentsTitle, content: ( 0 && - (contract.mechanism === 'cpmm-1' || - contract.mechanism === 'cpmm-multi-1') && { + (liveContract.mechanism === 'cpmm-1' || + liveContract.mechanism === 'cpmm-multi-1') && { title: positionsTitle, content: ( 0 && - !contract.isResolved + !liveContract.isResolved ? userPositionsByOutcome : undefined } - contract={contract as BinaryContract} + contract={liveContract as BinaryContract} setTotalPositions={setTotalPositions} /> ), @@ -152,8 +154,8 @@ export function ContractTabs(props: { content: ( )} - {!!marketTier && marketTier !== 'play' && marketTier !== 'basic' && ( - - - - )} + {!!marketTier && + marketTier !== 'play' && + marketTier !== 'basic' && + contract.token != 'CASH' && ( + + + + )} {removeEmojis(contract.question)} diff --git a/web/components/contract/market-topics.tsx b/web/components/contract/market-topics.tsx index 3ebc7f552a..4d6d84260b 100644 --- a/web/components/contract/market-topics.tsx +++ b/web/components/contract/market-topics.tsx @@ -18,6 +18,7 @@ import { SPICE_MARKET_TOOLTIP } from 'common/envs/constants' import { Row } from '../layout/row' import { SpiceCoin } from 'web/public/custom-components/spiceCoin' import clsx from 'clsx' +import { TopicTag } from '../topics/topic-tag' const DashboardLink = (props: { dashboard: { slug: string; title: string } @@ -25,7 +26,10 @@ const DashboardLink = (props: { const { dashboard } = props return ( {dashboard.title} @@ -77,7 +81,7 @@ export function MarketTopics(props: TopicRowProps) { return ( <> -
+
{isSpiceMarket && ( @@ -91,7 +95,17 @@ export function MarketTopics(props: TopicRowProps) { ))} {topics.map((t) => ( - + { + track('click category pill on market', { + contractId: contract.id, + categoryName: t.name, + }) + }} + /> ))} {user && canEdit && (
- - {!tradingAllowed(liveContract) && ( )} - {showReview && user && ( @@ -468,7 +454,8 @@ export function TwombaContractPageContent(props: ContractParams) {
) : ( - {marketTier && marketTier !== 'basic' && ( + {marketTier && marketTier !== 'basic' && !isCashContract && ( )} {!isBlocked(privateUser, contract.creatorId) && ( diff --git a/web/components/elections-page.tsx b/web/components/elections-page.tsx index adf3bafe35..8053685a4a 100644 --- a/web/components/elections-page.tsx +++ b/web/components/elections-page.tsx @@ -8,6 +8,10 @@ import { HorizontalDashboard } from './dashboard/horizontal-dashboard' import Link from 'next/link' import { ConditionalMarkets } from './us-elections/contracts/conditional-market/conditional-markets' import { ElectionsPageProps } from 'web/public/data/elections-data' +import { useSweepstakes } from './sweestakes-context' + +export const ELECTIONS_PARTY_QUESTION_PSEUDONYM = + 'Who will win the Presidential Election?' export function USElectionsPage(props: ElectionsPageProps) { const { @@ -17,14 +21,17 @@ export function USElectionsPage(props: ElectionsPageProps) { rawPolicyContracts, electionCandidateContract, electionPartyContract, + electionPartyCashContract, republicanCandidateContract, democratCandidateContract, houseContract, trendingDashboard, } = props + const { isPlay, setIsPlay } = useSweepstakes() if ( !electionPartyContract || + !electionPartyCashContract || !electionCandidateContract || !republicanCandidateContract || !democratCandidateContract || @@ -57,6 +64,11 @@ export function USElectionsPage(props: ElectionsPageProps) { ) + const currentElectionPartyContract = + !isPlay && electionPartyContract + ? electionPartyCashContract + : electionPartyContract + return ( @@ -69,9 +81,9 @@ export function USElectionsPage(props: ElectionsPageProps) { diff --git a/web/components/explainer-panel.tsx b/web/components/explainer-panel.tsx index c56e8a4160..bf8b001d88 100644 --- a/web/components/explainer-panel.tsx +++ b/web/components/explainer-panel.tsx @@ -8,13 +8,15 @@ import { FaHandHoldingUsd, FaPercentage } from 'react-icons/fa' import { TbTargetArrow } from 'react-icons/tb' import { track } from 'web/lib/service/analytics' import { - SPICE_PRODUCTION_ENABLED, SWEEPIES_NAME, TRADE_TERM, TRADING_TERM, TWOMBA_ENABLED, } from 'common/envs/constants' import { capitalize } from 'lodash' +import { AboutManifold } from './about-manifold' +import { GoGraph } from 'react-icons/go' +import Link from 'next/link' import { SweepiesCoin } from 'web/public/custom-components/sweepiesCoin' import { SWEEPIES_MONIKER } from 'common/util/format' @@ -23,12 +25,14 @@ export const ExplainerPanel = (props: { showWhatIsManifold?: boolean showAccuracy?: boolean showWhyBet?: boolean + showSweepstakes?: boolean }) => { const { className, showWhatIsManifold = true, showAccuracy = true, showWhyBet = true, + showSweepstakes = true, } = props const handleSectionClick = (sectionTitle: string) => { track('explainer section click', { sectionTitle }) @@ -38,6 +42,9 @@ export const ExplainerPanel = (props: { {showWhatIsManifold && } {showAccuracy && } {showWhyBet && } + {showSweepstakes && TWOMBA_ENABLED && ( + + )} ) } @@ -82,37 +89,10 @@ const WhatIsManifold = ({ } onClick={() => onClick('What is Manifold?')} > - + ) -export const WhatIsManifoldContent = ({ - className, -}: { - className?: string -}) => ( - <> - {TWOMBA_ENABLED ? ( -
- Manifold lets you {TRADE_TERM} on upcoming events. As other users{' '} - {TRADE_TERM} against you, it creates a probability of how likely the - event will happen—this is known as a prediction market. -
- ) : ( -
- Manifold lets you {TRADE_TERM} on upcoming events using play money. As - other users {TRADE_TERM} against you, it creates a probability of how - likely the event will happen—this is known as a prediction market. -
- )} -
- {capitalize(TRADE_TERM)} on current events, politics, tech, and AI, or - create your own market about an event you care about for others to trade - on! -
- -) - const WhyBet = ({ onClick }: { onClick: (sectionTitle: string) => void }) => ( void }) => ( >
{capitalize(TRADING_TERM)} contributes to accurate answers of important, - real-world questions. + real-world questions and helps you stay more accountable as you make + predictions.
- {!TWOMBA_ENABLED && SPICE_PRODUCTION_ENABLED && ( -
- {capitalize(TRADE_TERM)} to win prizepoints! Redeem them and we will - donate to a charity of your choice. Our users have{' '} - - raised over $300,000 for charity - {' '} - so far! -
- )} {TWOMBA_ENABLED && ( <>
- {capitalize(TRADE_TERM)} for a chance to win real cash prizes{' '} - when you trade with{' '} + {capitalize(TRADE_TERM)} with{' '} {' '} {SWEEPIES_NAME} ({SWEEPIES_MONIKER}) - + {' '} - . + for a chance to win withdrawable cash prizes.
)} @@ -198,3 +164,42 @@ const Accuracy = ({ onClick }: { onClick: (sectionTitle: string) => void }) => (
) + +const Sweepstakes = ({ + onClick, +}: { + onClick: (sectionTitle: string) => void +}) => ( + + What are sweepstakes markets? + + } + onClick={() => onClick('Are our forecasts accurate?')} + > +
+ There are two types of markets on Manifold: play money and sweepstakes. +
+
+ By default all markets are play money and use mana. These markets allow + you to win more mana but do not award any prizes which can be cashed out. +
+
+ Selected markets will have a sweepstakes toggle. These require sweepcash + to participate and allow winners to withdraw any sweepcash won to real + money. +
+
+ As play money and sweepstakes markets are independent of each other, they + may have different odds even though they share the same question and + comments. +
+ + Learn more. + +
+) diff --git a/web/components/gidx/location-monitor.tsx b/web/components/gidx/location-monitor.tsx new file mode 100644 index 0000000000..419dd2c672 --- /dev/null +++ b/web/components/gidx/location-monitor.tsx @@ -0,0 +1,55 @@ +import { Button } from 'web/components/buttons/button' +import { useMonitorStatus } from 'web/hooks/use-monitor-status' +import { useEvent } from 'web/hooks/use-event' +import { User } from 'common/user' +import { Col } from '../layout/col' +import { Contract } from 'common/contract' + +export const LocationMonitor = (props: { + contract: Contract + user: User | undefined | null + setShowPanel: (isOpen: boolean) => void + showPanel: boolean +}) => { + const { user, contract, setShowPanel, showPanel } = props + + const { + fetchMonitorStatus, + requestLocation, + loading, + monitorStatus, + monitorStatusMessage, + } = useMonitorStatus(contract.token === 'CASH', user, () => + setShowPanel(true) + ) + const getLocation = useEvent(() => { + requestLocation((location) => { + if (!location) { + return + } + // may need to pass location to fetchMonitorStatus + fetchMonitorStatus() + setShowPanel(false) + }) + }) + if (!user || !showPanel || !user.idVerified) { + return null + } + return ( + + Location Required +

+ You must share your location to participate in sweepstakes. Please allow + location sharing. +

+
+ +
+ {monitorStatus === 'error' && ( + {monitorStatusMessage} + )} + + ) +} diff --git a/web/components/gidx/location-panel.tsx b/web/components/gidx/location-panel.tsx index daa850071e..72a814de68 100644 --- a/web/components/gidx/location-panel.tsx +++ b/web/components/gidx/location-panel.tsx @@ -1,17 +1,11 @@ -import { - ENABLE_FAKE_CUSTOMER, - FAKE_CUSTOMER_BODY, - GPSData, -} from 'common/gidx/gidx' -import { useEffect, useState } from 'react' +import { GPSData } from 'common/gidx/gidx' import { Button } from 'web/components/buttons/button' -import { LoadingIndicator } from 'web/components/widgets/loading-indicator' -import { useNativeMessages } from 'web/hooks/use-native-messages' import { getIsNative } from 'web/lib/native/is-native' -import { postMessageToNative } from 'web/lib/native/post-message' import { BottomRow } from './register-component-helpers' import { LocationBlockedIcon } from 'web/public/custom-components/locationBlockedIcon' -import { MINUTE_MS } from 'common/util/time' +import { useLocation } from 'web/hooks/use-location' +import { LoadingIndicator } from '../widgets/loading-indicator' +import { useEffect } from 'react' export const LocationPanel = (props: { setLocation: (data: GPSData) => void @@ -30,115 +24,14 @@ export const LocationPanel = (props: { back, } = props - const [checkedPermissions, setCheckedPermissions] = useState(false) - const [timeout, setTimeout] = useState(10000) + const { checkedPermissions, requestLocation, checkLocationPermission } = + useLocation(setLocation, setLocationError, setLoading) useEffect(() => { - if (!checkedPermissions) checkLocationPermission() - }, []) - - // TODO: native app optimization: see if they've already given location permission - const checkLocationPermission = async () => { - setLoading(true) - - if ('permissions' in navigator) { - try { - const permissionStatus = await navigator.permissions.query({ - name: 'geolocation', - }) - switch (permissionStatus.state) { - case 'granted': - console.log('Location permission already granted') - requestLocation(() => setCheckedPermissions(true)) - break - case 'prompt': - console.log('Location permission has not been requested yet') - setCheckedPermissions(true) - setLoading(false) - break - case 'denied': - console.log('Location permission has been denied') - setCheckedPermissions(true) - setLoading(false) - break - } - } catch (error) { - console.error('Error checking geolocation permission:', error) - setCheckedPermissions(true) - } - } else { - console.log('Permissions API not supported') - setCheckedPermissions(true) - } - } - - useNativeMessages(['location'], (type, data) => { - console.log('Received location data from native', data) - if ('error' in data) { - setLocationError(data.error) - } else { - setLocation({ - ...data, - }) + if (!checkedPermissions) { + checkLocationPermission() } - setLoading(false) - }) - - const requestLocation = (onFinishCallback?: () => void) => { - setLocationError(undefined) - setLoading(true) - if (getIsNative()) { - console.log('requesting location from native') - postMessageToNative('locationRequested', {}) - onFinishCallback?.() - return - } - if ('geolocation' in navigator) { - navigator.geolocation.getCurrentPosition( - (position) => { - const { coords } = position - setLocation( - ENABLE_FAKE_CUSTOMER - ? FAKE_CUSTOMER_BODY.DeviceGPS - : { - Latitude: coords.latitude, - Longitude: coords.longitude, - Radius: coords.accuracy, - Altitude: coords.altitude ?? 0, - Speed: coords.speed ?? 0, - DateTime: new Date().toISOString(), - } - ) - setLoading(false) - onFinishCallback?.() - }, - (error) => { - console.log('Error requesting location', error) - if (error.message.includes('denied')) { - setLocationError( - 'Location permission denied. Please enable location sharing in your browser settings.' - ) - } else { - if (error.message.includes('timeout')) { - setTimeout(timeout + 5000) - } - setLocationError(error.message) - } - setLoading(false) - onFinishCallback?.() - }, - { - enableHighAccuracy: true, - timeout, - maximumAge: 20 * MINUTE_MS, - } - ) - } else { - setLocationError('Geolocation is not supported by your browser.') - setLoading(false) - onFinishCallback?.() - } - } + }, []) if (!checkedPermissions) { return diff --git a/web/components/gidx/register-component-helpers.tsx b/web/components/gidx/register-component-helpers.tsx index 54d0d6e9d0..d0ed7b5948 100644 --- a/web/components/gidx/register-component-helpers.tsx +++ b/web/components/gidx/register-component-helpers.tsx @@ -1,3 +1,4 @@ +import clsx from 'clsx' import { Row } from 'web/components/layout/row' export function InputTitle(props: { @@ -11,6 +12,25 @@ export function InputTitle(props: { ) } -export function BottomRow(props: { children: React.ReactNode }) { - return {props.children} +export function BottomRow(props: { + children: React.ReactNode + className?: string +}) { + const { className } = props + return ( + + {props.children} + + ) +} + +export function Divider(props: { className?: string }) { + return ( +
+ ) } diff --git a/web/components/gidx/register-user-form.tsx b/web/components/gidx/register-user-form.tsx index 6b023c6dba..8cdf44d6d9 100644 --- a/web/components/gidx/register-user-form.tsx +++ b/web/components/gidx/register-user-form.tsx @@ -32,6 +32,7 @@ import { CoinNumber } from 'web/components/widgets/coin-number' import { RegisterIcon } from 'web/public/custom-components/registerIcon' import { BottomRow, + Divider, InputTitle, } from 'web/components/gidx/register-component-helpers' import { DocumentUploadIcon } from 'web/public/custom-components/documentUploadIcon' @@ -241,7 +242,7 @@ export const RegisterUserForm = (props: { /> -
+ Citizenship Country @@ -284,8 +285,8 @@ export const RegisterUserForm = (props: { onChange={(e) => setUserInfo({ ...userInfo, City: e.target.value })} /> - - +
+ State - + Postal Code - +
{error && ( {error} @@ -453,7 +454,7 @@ export const RegisterUserForm = (props: { Hooray! Now you can participate in sweepstakes markets. We sent you{' '} void @@ -216,7 +217,7 @@ export const UploadDocuments = (props: {
)} - + @@ -233,7 +234,7 @@ export const UploadDocuments = (props: { Continue )} - + ) } diff --git a/web/components/gidx/verify-me.tsx b/web/components/gidx/verify-me.tsx index 0005ff5ae1..4fe4ba1977 100644 --- a/web/components/gidx/verify-me.tsx +++ b/web/components/gidx/verify-me.tsx @@ -8,7 +8,7 @@ import { import { Col } from 'web/components/layout/col' import Link from 'next/link' import clsx from 'clsx' -import { Button, buttonClass } from 'web/components/buttons/button' +import { Button, buttonClass, IconButton } from 'web/components/buttons/button' import { api } from 'web/lib/api/api' import { usePrivateUser, useUser } from 'web/hooks/use-user' import { GIDXDocument, idNameToCategoryType } from 'common/gidx/gidx' @@ -20,6 +20,29 @@ import { useMonitorStatus } from 'web/hooks/use-monitor-status' import { VerifyButton } from '../twomba/toggle-verify-callout' import { MdBlock } from 'react-icons/md' import { XIcon } from '@heroicons/react/solid' +import { usePersistentLocalState } from 'web/hooks/use-persistent-local-state' + +const HideVerifyMeButton = ({ + hideVerifyMe, + setHideVerifyMe, + className, +}: { + hideVerifyMe: boolean + setHideVerifyMe: (value: boolean) => void + className?: string +}) => { + if (hideVerifyMe) return null + + return ( + setHideVerifyMe(true)} + > + + + ) +} export const VerifyMe = (props: { user: User }) => { const user = useUser() ?? props.user @@ -34,6 +57,12 @@ export const VerifyMe = (props: { user: User }) => { const [documents, setDocuments] = useState(null) const [loading, setLoading] = useState(false) + + const [hideVerifyMe, setHideVerifyMe] = usePersistentLocalState( + false, + `hideVerifyMe` + ) + const { fetchMonitorStatus, loading: loadingMonitorStatus, @@ -53,6 +82,10 @@ export const VerifyMe = (props: { user: User }) => { const showUploadDocsButton = getDocumentsStatus(documents ?? []).isRejected && documents + if (hideVerifyMe) { + return null + } + if (identityBlocked(user, privateUser)) { return ( { 'border-ink-400 bg-ink-200 text-ink-700 justify-between gap-2 rounded border p-2 px-4' } > - + Blocked from sweepstakes participation due to blocked identity.{' '} + ) @@ -82,16 +120,30 @@ export const VerifyMe = (props: { user: User }) => { - Document verification pending... - + + Document verification pending... + + + + + + {documents && ( @@ -139,7 +191,7 @@ export const VerifyMe = (props: { user: User }) => { return ( @@ -159,14 +211,19 @@ export const VerifyMe = (props: { user: User }) => { return ( - + Blocked from sweepstakes participation due to underage.{' '} + ) @@ -184,19 +241,31 @@ export const VerifyMe = (props: { user: User }) => { 'flex w-full flex-col items-center justify-between gap-2 sm:flex-row' } > - - - Blocked from sweepstakes participation due to location.{' '} - + + + + Blocked from sweepstakes participation due to location.{' '} + + + +
{monitorStatus === 'error' && ( {monitorStatusMessage} @@ -211,11 +280,21 @@ export const VerifyMe = (props: { user: User }) => { 'border-primary-500 bg-primary-100 items-center justify-between gap-2 rounded border px-4 py-2 sm:flex-row' } > - + {getVerificationStatus(user).status !== 'success' && `You are not yet verified! Verify to start trading on ${SWEEPIES_NAME} markets.`} - - + + + + ) } diff --git a/web/components/leagues/prizes-modal.tsx b/web/components/leagues/prizes-modal.tsx index 11ac326452..ccf963017d 100644 --- a/web/components/leagues/prizes-modal.tsx +++ b/web/components/leagues/prizes-modal.tsx @@ -3,7 +3,6 @@ import { DIVISION_NAMES, prizesByDivisionAndRank } from 'common/leagues' import { Col } from '../layout/col' import { Modal } from '../layout/modal' import { Title } from '../widgets/title' -import { SPICE_NAME } from 'common/envs/constants' export function PrizesModal(props: { open: boolean @@ -20,8 +19,8 @@ export function PrizesModal(props: { Prizes
- Win {SPICE_NAME}s at the end of the season based on your division - and finishing rank. + Win mana at the end of the season based on your division and + finishing rank.
diff --git a/web/components/nav/banner.tsx b/web/components/nav/banner.tsx index ce8d1cb6f5..24fb7dfa24 100644 --- a/web/components/nav/banner.tsx +++ b/web/components/nav/banner.tsx @@ -5,6 +5,7 @@ import { IconButton } from '../buttons/button' import { Row } from '../layout/row' import { LogoIcon } from '../icons/logo-icon' import { usePersistentLocalState } from 'web/hooks/use-persistent-local-state' +import Link from 'next/link' export function Banner(props: { setShowBanner?: (show: boolean) => void @@ -20,9 +21,16 @@ export function Banner(props: { 'text-ink-900 bg-primary-100 z-10 justify-between gap-4' )} > - - {children} - + {link && ( + + {children} + + )} {setShowBanner && ( { return [!bannerSeen, () => setBannerSeen(1)] as const } + +export const TwombaBanner = () => { + const [showBanner, hideBanner] = useBanner('twomba') + if (!showBanner) return null + return ( + + + +
Sweepstakes cash prizes are here! Read more
+
+
+ ) +} diff --git a/web/components/nav/profile-summary.tsx b/web/components/nav/profile-summary.tsx index 21815151bd..8498e57a93 100644 --- a/web/components/nav/profile-summary.tsx +++ b/web/components/nav/profile-summary.tsx @@ -33,7 +33,6 @@ export function ProfileSummary(props: { user: User; className?: string }) { />
- {!SPICE_PRODUCTION_ENABLED &&
{user.name}
}
+ {pseudonymName} + + ) + } if (mainBinaryMCAnswer && mechanism === 'cpmm-multi-1') { return ( diff --git a/web/components/portfolio/balance-change-table.tsx b/web/components/portfolio/balance-change-table.tsx index ff337ba8e4..61ac7b3a53 100644 --- a/web/components/portfolio/balance-change-table.tsx +++ b/web/components/portfolio/balance-change-table.tsx @@ -4,8 +4,8 @@ import { formatMoneyUSD, formatSpice, formatSweepies, + formatWithToken, maybePluralize, - shortFormatNumber, } from 'common/util/format' import { Row } from 'web/components/layout/row' import clsx from 'clsx' @@ -20,7 +20,6 @@ import { isTxnChange, } from 'common/balance-change' import Link from 'next/link' -import { ENV_CONFIG } from 'common/envs/constants' import { FaBackward, FaArrowRightArrowLeft, @@ -272,9 +271,11 @@ const BetBalanceChangeRow = (props: { const { amount, contract, answer, bet, type } = change const { outcome } = bet const { slug, question, creatorUsername } = contract - const niceAmount = - (token === 'CASH' ? 'S' : ENV_CONFIG.moneyMoniker) + - shortFormatNumber(amount).replace('-', '') + const niceAmount = formatWithToken({ + amount: Math.abs(amount), + token: token === 'MANA' ? 'M$' : 'CASH', + short: true, + }) const direction = type === 'redeem_shares' ? 'sideways' diff --git a/web/components/portfolio/twomba-portfolio-graph.tsx b/web/components/portfolio/twomba-portfolio-graph.tsx index 04f1e79ba6..0345cadb39 100644 --- a/web/components/portfolio/twomba-portfolio-graph.tsx +++ b/web/components/portfolio/twomba-portfolio-graph.tsx @@ -185,6 +185,7 @@ export const TwombaPortfolioGraph = (props: { setPortfolioFocus('all') }} areaClassName="hover:opacity-50 opacity-[0.2] transition-opacity" + noWatermark /> ) } @@ -267,6 +268,7 @@ export const TwombaProfitGraph = (props: { color={['#14b8a6', '#F75836']} negativeThreshold={negativeThreshold} hideXAxis={hideXAxis} + noWatermark /> ) } @@ -319,15 +321,23 @@ function usePortfolioPointsFromHistory( return balance + investment - totalDeposits - firstProfit } - function getNetworth(balance: number, investment: number) { - return balance + investment + function getNetworth( + balance: number, + investment: number, + spiceBalance?: number + ) { + return ( + balance + + investment + + (spiceBalance ?? 0) * SPICE_TO_MANA_CONVERSION_RATE + ) } portfolioHistory.forEach((p) => { profitPoints.push({ x: p.timestamp, y: getProfit( - p.balance, + p.balance + (p.spiceBalance ?? 0) * SPICE_TO_MANA_CONVERSION_RATE, p.investmentValue, p.totalDeposits, firstProfit @@ -346,7 +356,7 @@ function usePortfolioPointsFromHistory( }) networthPoints.push({ x: p.timestamp, - y: getNetworth(p.balance, p.investmentValue), + y: getNetworth(p.balance, p.investmentValue, p.spiceBalance), obj: p, }) cashProfitPoints.push({ diff --git a/web/components/portfolio/twomba-portfolio-value-section.tsx b/web/components/portfolio/twomba-portfolio-value-section.tsx index 3bf8e7d2da..24b6c83fb9 100644 --- a/web/components/portfolio/twomba-portfolio-value-section.tsx +++ b/web/components/portfolio/twomba-portfolio-value-section.tsx @@ -26,6 +26,7 @@ import { } from './twomba-portfolio-graph' import { getPortfolioValues } from '../twomba-portfolio-helpers' import { useSweepstakes } from '../sweestakes-context' +import { SPICE_TO_MANA_CONVERSION_RATE } from 'common/envs/constants' export type PortfolioHoveredGraphType = | 'balance' @@ -177,13 +178,18 @@ export const TwombaPortfolioValueSection = memo( const { firstProfit, totalValue, calculatedProfit } = getPortfolioValues({ first: first ? { - balance: first.balance, + balance: + first.balance + + (first.spiceBalance ?? 0) * SPICE_TO_MANA_CONVERSION_RATE, investmentValue: first.investmentValue, totalDeposits: first.totalDeposits, } : undefined, last: { - balance: lastPortfolioMetrics.balance, + balance: + lastPortfolioMetrics.balance + + (lastPortfolioMetrics.spiceBalance ?? 0) * + SPICE_TO_MANA_CONVERSION_RATE, investmentValue: lastPortfolioMetrics.investmentValue, totalDeposits: lastPortfolioMetrics.totalDeposits, }, @@ -400,7 +406,7 @@ function TwombaPortfolioValueSkeleton(props: { {portfolioGraphElement && ( {profitGraphElement && ( ) } + +export function BinaryUserPosition(props: { + contract: BinaryContract + userBets: Bet[] + user: User + className?: string + binaryPseudonym?: { + YES: { + pseudonymName: string + pseudonymColor: string + } + NO: { + pseudonymName: string + pseudonymColor: string + } + } +}) { + const { contract, user, userBets, className, binaryPseudonym } = props + + const { totalShares } = getContractBetMetrics(contract, userBets) + + const yesWinnings = totalShares.YES ?? 0 + const noWinnings = totalShares.NO ?? 0 + const position = yesWinnings - noWinnings + const betUp = position > 1e-7 + const betDown = position < 1e-7 + const sharesSum = sumBy(userBets, (bet) => + bet.outcome === 'YES' ? bet.shares : -bet.shares + ) + const [openModal, setOpenModal] = useState(false) + if (!betUp && !betDown) { + return <> + } + + return ( + + ) +} diff --git a/web/components/us-elections/contracts/party-panel/binary-party-panel.tsx b/web/components/us-elections/contracts/party-panel/binary-party-panel.tsx new file mode 100644 index 0000000000..38ec7d5977 --- /dev/null +++ b/web/components/us-elections/contracts/party-panel/binary-party-panel.tsx @@ -0,0 +1,411 @@ +import { track } from 'web/lib/service/analytics' +import clsx from 'clsx' +import { Bet } from 'common/bet' +import { getDisplayProbability, getProbability } from 'common/calculate' +import { BinaryContract, Contract } from 'common/contract' +import { TRADE_TERM } from 'common/envs/constants' +import { User } from 'common/user' +import { formatPercent } from 'common/util/format' +import { capitalize } from 'lodash' +import Image from 'next/image' +import { useState } from 'react' +import { + AnswerBar, + CreatorAndAnswerLabel, +} from 'web/components/answers/answer-components' +import { BetDialog } from 'web/components/bet/bet-dialog' +import { BinaryOutcomes } from 'web/components/bet/bet-panel' +import { Button } from 'web/components/buttons/button' +import { isClosed } from 'web/components/contract/contracts-table' +import { Col } from 'web/components/layout/col' +import { Row } from 'web/components/layout/row' +import { Spacer } from 'web/components/layout/spacer' +import { SizedContainer } from 'web/components/sized-container' +import { ProbabilityNeedle } from 'web/components/us-elections/probability-needle' +import { useSaveBinaryShares } from 'web/hooks/use-save-binary-shares' +import { useUser } from 'web/hooks/use-user' +import { useUserContractBets } from 'web/hooks/use-user-bets' +import { firebaseLogin } from 'web/lib/firebase/users' +import { BubblePercentChange } from '../candidates-panel/candidate-bar' +import { BinaryUserPosition } from '../candidates-panel/candidates-user-position' +import { ELECTIONS_PARTY_QUESTION_PSEUDONYM } from 'web/components/elections-page' + +const politicsBinaryPseudonym = { + YES: { + pseudonymName: 'TRUMP', + pseudonymColor: 'sienna', + }, + NO: { + pseudonymName: 'HARRIS', + pseudonymColor: 'azure', + }, +} + +// just the bars +export function BinaryPartyPanel(props: { contract: BinaryContract }) { + const { contract } = props + const user = useUser() + + const userBets = useUserContractBets(user?.id, contract.id) + + const { sharesOutcome } = useSaveBinaryShares(contract, userBets) + + const republicanProb = getDisplayProbability(contract) + const democraticProb = 1 - republicanProb + + return ( + +
+
+ {'trump'} +
+
+ {'trump'} +
+ + + {(width, height) => ( + + )} + + + +
+ + {(width, height) => ( + + )} + + + + + + ) +} + +export function getPartyColor(name: string) { + // return 'bg-primary-500' + if (name == 'Democratic Party' || name.includes('Democratic Party')) + return '#adc4e3' + if (name == 'Republican Party' || name.includes('Republican Party')) + return '#ecbab5' + return '#9E9FBD' +} + +function BinaryPartyAnswer(props: { + contract: BinaryContract + onHover?: (hovering: boolean) => void + userBets?: Bet[] + user?: User | null + sharesOutcome: BinaryOutcomes +}) { + const { contract, onHover, userBets, user, sharesOutcome } = props + + const { resolution } = contract + + const repProb = getProbability(contract) + const demProb = 1 - repProb + const repResolvedProb = contract.resolutionProbability + const demResolvedProb = repResolvedProb ? 1 - repResolvedProb : undefined + const probChangesToday = contract.probChanges.day + + const harrisHead = ( + {''} + ) + + const trumpHead = ( + {''} + ) + + return ( + + + {trumpHead} + + + {!resolution && sharesOutcome == 'YES' && user && !!userBets && ( + + )} + + + } + end={ + +
+
{formatPercent(repProb)}
+ {probChangesToday > 0 && ( + + )} +
+ +
+ } + /> + + {harrisHead} + + + {!resolution && sharesOutcome == 'NO' && user && !!userBets && ( + + )} + + + } + end={ + +
+
{formatPercent(demProb)}
+ {probChangesToday < 0 && ( + + )} +
+ +
+ } + /> + + ) +} + +function BinaryPartyAnswerSnippet(props: { + contract: BinaryContract + color: string + betUp: boolean + user?: User | null + className?: string + isDemocraticParty: boolean + probability: number + userBets: Bet[] +}) { + const { + contract, + betUp, + user, + className, + isDemocraticParty, + probability, + userBets, + } = props + + const { resolution } = contract + + const probChangesToday = contract.probChanges.day + + return ( + +
+ {isDemocraticParty ? 'Harris' : 'Trump'} +
+ + +
{formatPercent(probability)}
+ {(isDemocraticParty && probChangesToday < 0) || + (!isDemocraticParty && probChangesToday > 0 && ( + + ))} +
+ + +
+ + + {!resolution && betUp && user && ( + + )} +
+ + ) +} + +export function BinaryBetButton(props: { + contract: Contract + user?: User | null + initialOutcome?: BinaryOutcomes + className?: string + questionPseudonym?: string +}) { + const { contract, initialOutcome, className, questionPseudonym } = props + const user = useUser() + const [open, setOpen] = useState(false) + + if ( + !isClosed(contract) && + !contract.isResolved && + (contract.mechanism === 'cpmm-1' || contract.mechanism === 'cpmm-multi-1') + ) { + return ( + <> + + + {open && ( + + )} + + ) + } + return <> +} diff --git a/web/components/us-elections/contracts/politics-card.tsx b/web/components/us-elections/contracts/politics-card.tsx index 23eef6891c..025fa1bcc7 100644 --- a/web/components/us-elections/contracts/politics-card.tsx +++ b/web/components/us-elections/contracts/politics-card.tsx @@ -1,5 +1,10 @@ import clsx from 'clsx' -import { MultiContract, contractPath } from 'common/contract' +import { + BinaryContract, + Contract, + MultiContract, + contractPath, +} from 'common/contract' import Link from 'next/link' import Router from 'next/router' import { VisibilityIcon } from 'web/components/contract/contracts-table' @@ -11,9 +16,13 @@ import { track } from 'web/lib/service/analytics' import { CandidatePanel } from './candidates-panel/candidates-panel' import { SmallCandidatePanel } from './candidates-panel/small-candidate-panel' import { PartyPanel } from './party-panel/party-panel' +import { BinaryPartyPanel } from './party-panel/binary-party-panel' +import { TwombaToggle } from 'web/components/twomba/twomba-toggle' +import { TWOMBA_ENABLED } from 'common/envs/constants' +import { Row } from 'web/components/layout/row' export function PoliticsCard(props: { - contract: MultiContract + contract: Contract children?: React.ReactNode promotedData?: { adId: string; reward: number } /** location of the card, to disambiguate card click events */ @@ -22,7 +31,7 @@ export function PoliticsCard(props: { customTitle?: string titleSize?: 'lg' maxAnswers?: number - viewType: 'PARTY' | 'CANDIDATE' | 'STATE' | 'SMALL CANDIDATE' + viewType: 'PARTY' | 'CANDIDATE' | 'STATE' | 'SMALL CANDIDATE' | 'BINARY_PARTY' excludeAnswers?: string[] panelClassName?: string includeHead?: boolean @@ -92,8 +101,7 @@ export function PoliticsCard(props: { }} > @@ -101,6 +109,41 @@ export function PoliticsCard(props: { ) } + if (viewType == 'BINARY_PARTY') { + return ( + + + + {customTitle ?? contract.question} + + {TWOMBA_ENABLED && } + + + {children} + { + trackClick() + Router.push(path) + e.currentTarget.focus() // focus the div like a button, for style + }} + > + + + + ) + } if (viewType == 'CANDIDATE') { return ( @@ -117,7 +160,7 @@ export function PoliticsCard(props: { {customTitle ? customTitle : extractPhrase(contract.question)} @@ -149,7 +192,7 @@ export function PoliticsCard(props: { {!disableClearButton && ( @@ -181,6 +183,7 @@ export function BuyAmountInput(props: { disableQuickButtons?: boolean token?: InputTokenType marketTier?: MarketTierType | undefined + sliderColor?: string }) { const { amount, @@ -202,6 +205,7 @@ export function BuyAmountInput(props: { quickButtonValues, disableQuickButtons, token = 'M$', + sliderColor, } = props const user = useUser() @@ -325,6 +329,7 @@ export function BuyAmountInput(props: { disabled={disabled} smallAmounts={!hasLotsOfMoney || marketTier === 'play'} token={token} + sliderColor={sliderColor} /> )} {error ? ( diff --git a/web/components/widgets/input.tsx b/web/components/widgets/input.tsx index 0f2e2caf3a..e2758a4d61 100644 --- a/web/components/widgets/input.tsx +++ b/web/components/widgets/input.tsx @@ -34,7 +34,7 @@ export const Input = forwardRef( : 'border-ink-300 placeholder-ink-400 focus:ring-primary-500 focus:border-primary-500', className )} - step={0.001} // default to 3 decimal places + step={rest.step ?? 0.001} // default to 3 decimal places {...rest} /> diff --git a/web/components/widgets/slider.tsx b/web/components/widgets/slider.tsx index 53d2db7f51..2ef915c1d5 100644 --- a/web/components/widgets/slider.tsx +++ b/web/components/widgets/slider.tsx @@ -11,6 +11,8 @@ const colors = { red: ['bg-scarlet-400', 'focus:outline-scarlet-600/30 bg-scarlet-600'], indigo: ['bg-primary-300', 'focus:outline-primary-500/30 bg-primary-500'], violet: ['bg-violet-300', 'focus:outline-violet-500/30 bg-violet-500'], + azure: ['bg-azure-300', 'focus:outline-azure-500/30 bg-azure-500'], + sienna: ['bg-sienna-300', 'focus:outline-sienna-500/30 bg-sienna-500'], // light: ['primary-200', 'primary-300'] } as const export type Mark = { value: number; label: string } diff --git a/web/hooks/use-location.ts b/web/hooks/use-location.ts new file mode 100644 index 0000000000..2fb43616fb --- /dev/null +++ b/web/hooks/use-location.ts @@ -0,0 +1,104 @@ +import { useState } from 'react' +import { + ENABLE_FAKE_CUSTOMER, + FAKE_CUSTOMER_BODY, + GPSData, +} from 'common/gidx/gidx' +import { getIsNative } from 'web/lib/native/is-native' +import { postMessageToNative } from 'web/lib/native/post-message' +import { MINUTE_MS } from 'common/util/time' + +export const useLocation = ( + setLocation: (data: GPSData) => void, + setLocationError: (error: string | undefined) => void, + setLoading: (loading: boolean) => void +) => { + const [checkedPermissions, setCheckedPermissions] = useState(false) + + const checkLocationPermission = async () => { + setLoading(true) + + if ('permissions' in navigator) { + try { + const permissionStatus = await navigator.permissions.query({ + name: 'geolocation', + }) + switch (permissionStatus.state) { + case 'granted': + console.log('Location permission already granted') + requestLocation(() => setCheckedPermissions(true)) + break + case 'prompt': + console.log('Location permission has not been requested yet') + setCheckedPermissions(true) + setLoading(false) + break + case 'denied': + console.log('Location permission has been denied') + setCheckedPermissions(true) + setLoading(false) + break + } + } catch (error) { + console.error('Error checking geolocation permission:', error) + setCheckedPermissions(true) + } + } else { + console.error('Permissions API not supported') + setCheckedPermissions(true) + } + } + + const requestLocation = (onFinishCallback?: (location?: GPSData) => void) => { + setLocationError(undefined) + setLoading(true) + if (getIsNative()) { + console.log('requesting location from native') + postMessageToNative('locationRequested', {}) + onFinishCallback?.() + return + } + if ('geolocation' in navigator) { + navigator.geolocation.getCurrentPosition( + (position) => { + const { coords } = position + const location = { + Latitude: coords.latitude, + Longitude: coords.longitude, + Radius: coords.accuracy, + Altitude: coords.altitude ?? 0, + Speed: coords.speed ?? 0, + DateTime: new Date().toISOString(), + } + setLocation( + ENABLE_FAKE_CUSTOMER ? FAKE_CUSTOMER_BODY.DeviceGPS : location + ) + setLoading(false) + onFinishCallback?.(location) + }, + (error) => { + console.error('Error requesting location', error) + if (error.message.includes('denied')) { + setLocationError( + 'Location permission denied. Please enable location sharing in your browser settings.' + ) + } else { + setLocationError(error.message) + } + setLoading(false) + onFinishCallback?.() + }, + { + enableHighAccuracy: true, + maximumAge: 20 * MINUTE_MS, + } + ) + } else { + setLocationError('Geolocation is not supported by your browser.') + setLoading(false) + onFinishCallback?.() + } + } + + return { checkedPermissions, requestLocation, checkLocationPermission } +} diff --git a/web/hooks/use-monitor-status.ts b/web/hooks/use-monitor-status.ts index d05bb2336a..12f3d55c59 100644 --- a/web/hooks/use-monitor-status.ts +++ b/web/hooks/use-monitor-status.ts @@ -1,17 +1,17 @@ import { useEffect, useState } from 'react' import { api } from 'web/lib/api/api' import { useNativeMessages } from 'web/hooks/use-native-messages' -import { getIsNative } from 'web/lib/native/is-native' -import { postMessageToNative } from 'web/lib/native/post-message' import { GPSData } from 'common/gidx/gidx' import { MINUTE_MS } from 'common/util/time' import { User } from 'common/user' import { usePersistentInMemoryState } from 'web/hooks/use-persistent-in-memory-state' import { useEvent } from 'web/hooks/use-event' +import { useLocation } from './use-location' export const useMonitorStatus = ( polling: boolean, - user: User | undefined | null + user: User | undefined | null, + promptUserToShareLocation?: () => void ) => { const [location, setLocation] = usePersistentInMemoryState< GPSData | undefined @@ -36,44 +36,18 @@ export const useMonitorStatus = ( setLocation(data as GPSData) } }) - - const requestLocation = () => { - setMonitorStatusMessage(undefined) - if (getIsNative()) { - postMessageToNative('locationRequested', {}) - } else if ('geolocation' in navigator) { - navigator.geolocation.getCurrentPosition( - (position) => { - const { coords } = position - const loc = { - Latitude: coords.latitude, - Longitude: coords.longitude, - Radius: coords.accuracy, - Altitude: coords.altitude ?? 0, - Speed: coords.speed ?? 0, - DateTime: new Date().toISOString(), - } - setLocation(loc) - fetchMonitorStatusWithLocation(loc) - }, - (error) => { - setMonitorStatusMessage(error.message) - setMonitorStatus('error') - }, - { - enableHighAccuracy: true, - timeout: 5000, - maximumAge: 20 * MINUTE_MS, - } - ) - } else { - setMonitorStatus('error') - setMonitorStatusMessage('Geolocation is not supported by your browser.') - } + const setLocationError = (error: string | undefined) => { + setMonitorStatus('error') + setMonitorStatusMessage(error) } + const { checkedPermissions, requestLocation, checkLocationPermission } = + useLocation(setLocation, setLocationError, setLoading) const fetchMonitorStatus = useEvent(async () => { - if (!user || !user.idVerified) { + if (!user) { + return + } + if (!user.idVerified) { setMonitorStatus('error') setMonitorStatusMessage('User not verified') return { @@ -83,10 +57,23 @@ export const useMonitorStatus = ( } setMonitorStatusMessage(undefined) setLoading(true) - if (!location) requestLocation() - else return fetchMonitorStatusWithLocation(location) + if (!location) { + checkLocationPermission() + } else return fetchMonitorStatusWithLocation(location) }) + useEffect(() => { + if (checkedPermissions && !location) { + if (promptUserToShareLocation) { + promptUserToShareLocation() + } else { + requestLocation() + } + } else if (checkedPermissions && location) { + fetchMonitorStatusWithLocation(location) + } + }, [checkedPermissions, location]) + const fetchMonitorStatusWithLocation = useEvent( async (location: GPSData | undefined) => { if (!location) { @@ -120,7 +107,7 @@ export const useMonitorStatus = ( ) useEffect(() => { - if (!polling) return + if (!polling || !user) return const currentTime = Date.now() const timeSinceLastCall = currentTime - lastApiCallTime @@ -131,7 +118,13 @@ export const useMonitorStatus = ( const interval = setInterval(fetchMonitorStatus, 20 * MINUTE_MS) return () => clearInterval(interval) - }, [polling, fetchMonitorStatus, lastApiCallTime]) + }, [polling, fetchMonitorStatus, lastApiCallTime, user?.idVerified]) - return { monitorStatus, monitorStatusMessage, fetchMonitorStatus, loading } + return { + monitorStatus, + monitorStatusMessage, + fetchMonitorStatus, + loading, + requestLocation, + } } diff --git a/web/lib/politics/home.ts b/web/lib/politics/home.ts index e91b8f3ece..bca65a8662 100644 --- a/web/lib/politics/home.ts +++ b/web/lib/politics/home.ts @@ -17,9 +17,11 @@ import { getMultiBetPoints } from 'common/contract-params' import { PolicyContractType, PolicyData } from 'web/public/data/policy-data' import { mapValues } from 'lodash' import { getBetPoints } from 'web/lib/supabase/bets' +import { CASH_SUFFIX } from 'common/envs/constants' export const ELECTION_PARTY_CONTRACT_SLUG = - 'which-party-will-win-the-2024-us-pr-f4158bf9278a' + // 'which-party-will-win-the-2024-us-pr-f4158bf9278a' + 'will-trump-win-the-2024-election' export async function getElectionsPageProps() { const adminDb = await initSupabaseAdmin() @@ -47,6 +49,7 @@ export async function getElectionsPageProps() { const specialContractSlugs = [ ELECTION_PARTY_CONTRACT_SLUG, + `${ELECTION_PARTY_CONTRACT_SLUG}${CASH_SUFFIX}`, 'who-will-win-the-2024-us-presidenti-8c1c8b2f8964', 'who-will-win-the-2024-republican-pr-e1332cf40e59', 'who-will-win-the-2024-democratic-pr-47576e90fa38', @@ -64,6 +67,7 @@ export async function getElectionsPageProps() { const [ electionPartyContract, + electionPartyCashContract, electionCandidateContract, republicanCandidateContract, democratCandidateContract, @@ -106,6 +110,7 @@ export async function getElectionsPageProps() { rawGovernorStateContracts: governorStateContracts, rawPolicyContracts: policyContracts, electionPartyContract, + electionPartyCashContract, electionCandidateContract, republicanCandidateContract, democratCandidateContract, diff --git a/web/lib/util/devtools.ts b/web/lib/util/devtools.ts new file mode 100644 index 0000000000..f3827b02af --- /dev/null +++ b/web/lib/util/devtools.ts @@ -0,0 +1,115 @@ +// devtoolsDetector.ts +export interface DevtoolsDetectorConfig { + pollingIntervalSeconds: number + maxMillisBeforeAckWhenClosed: number + moreAnnoyingDebuggerStatements: number + onDetectOpen?: () => void + onDetectClose?: () => void + startup: 'asap' | 'manual' | 'domContentLoaded' + onCheckOpennessWhilePaused: 'returnStaleValue' | 'throw' +} + +export interface DevtoolsDetector { + config: DevtoolsDetectorConfig + readonly isOpen: boolean + paused: boolean +} + +export const setupDevtoolsDetector = (): DevtoolsDetector => { + const config: DevtoolsDetectorConfig = { + pollingIntervalSeconds: 0.25, + maxMillisBeforeAckWhenClosed: 100, + moreAnnoyingDebuggerStatements: 1, + onDetectOpen: undefined, + onDetectClose: undefined, + startup: 'asap', + onCheckOpennessWhilePaused: 'returnStaleValue', + } + + Object.seal(config) + + const heart = new Worker( + URL.createObjectURL( + new Blob( + [ + `"use strict"; + onmessage = (ev) => { postMessage({ isOpenBeat: true }); + debugger; + for (let i = 0; i < ev.data.moreDebugs; i++) { + debugger; + } + postMessage({ isOpenBeat: false }); + };`, + ], + { type: 'text/javascript' } + ) + ) + ) + + let _isDevtoolsOpen = false + let _isDetectorPaused = true + let resolveVerdict: (value: boolean | null) => void = () => {} + let nextPulse$: NodeJS.Timeout | number = NaN + + const onHeartMsg = (msg: MessageEvent<{ isOpenBeat: boolean }>) => { + if (msg.data.isOpenBeat) { + const p = new Promise((_resolveVerdict) => { + resolveVerdict = _resolveVerdict + let wait$: NodeJS.Timeout | number = setTimeout(() => { + wait$ = NaN + resolveVerdict(true) + }, config.maxMillisBeforeAckWhenClosed + 1) + }) + + p.then((verdict) => { + if (verdict === null) return + if (verdict !== _isDevtoolsOpen) { + _isDevtoolsOpen = verdict + const cb = { true: config.onDetectOpen, false: config.onDetectClose }[ + verdict + '' + ] + if (cb) cb() + } + nextPulse$ = setTimeout(() => { + nextPulse$ = NaN + doOnePulse() + }, config.pollingIntervalSeconds * 1000) + }) + } else { + resolveVerdict(false) + } + } + + const doOnePulse = () => { + heart.postMessage({ moreDebugs: config.moreAnnoyingDebuggerStatements }) + } + + const detector: DevtoolsDetector = { + config, + get isOpen() { + if (_isDetectorPaused && config.onCheckOpennessWhilePaused === 'throw') { + throw new Error('`onCheckOpennessWhilePaused` is set to `"throw"`.') + } + return _isDevtoolsOpen + }, + get paused() { + return _isDetectorPaused + }, + set paused(pause: boolean) { + if (_isDetectorPaused === pause) return + _isDetectorPaused = pause + if (pause) { + heart.removeEventListener('message', onHeartMsg as EventListener) + clearTimeout(nextPulse$) + nextPulse$ = NaN + resolveVerdict(null) + } else { + heart.addEventListener('message', onHeartMsg as EventListener) + doOnePulse() + } + }, + } + + Object.freeze(detector) + return detector +} diff --git a/web/next.config.js b/web/next.config.js index 035be9d852..42de430a5a 100644 --- a/web/next.config.js +++ b/web/next.config.js @@ -92,12 +92,12 @@ module.exports = { }, { source: '/privacy', - destination: '/privacy.html', + destination: '/privacy-policy.html', permanent: true, }, { source: '/terms', - destination: '/terms.html', + destination: '/terms-and-conditions.html', permanent: true, }, { diff --git a/web/pages/[username]/[contractSlug].tsx b/web/pages/[username]/[contractSlug].tsx index b8e4947d1c..76a60715b0 100644 --- a/web/pages/[username]/[contractSlug].tsx +++ b/web/pages/[username]/[contractSlug].tsx @@ -14,6 +14,7 @@ import { } from 'common/contract' import { ContractMetric } from 'common/contract-metric' import { + CASH_SUFFIX, HOUSE_BOT_USERNAME, SPICE_MARKET_TOOLTIP, TWOMBA_ENABLED, @@ -118,7 +119,7 @@ export async function getStaticProps(ctx: { const manaContract = contract.siblingContractId ? await getContract(adminDb, contract.siblingContractId) : null - const slug = manaContract?.slug ?? contractSlug.replace('--cash', '') + const slug = manaContract?.slug ?? contractSlug.replace(CASH_SUFFIX, '') return { redirect: { @@ -628,7 +629,8 @@ export function ContractPageContent(props: ContractParams) {
{ - const [devtoolsOpen, setDevtoolsOpen] = usePersistentInMemoryState( - false, - 'devtools' - ) + const [_, setDetector] = useState(null) + const [isDevtoolsOpen, setIsDevtoolsOpen] = useState(false) + useEffect(() => { - const isLocal = - window.location.hostname === 'localhost' || - // For ios local dev - window.location.hostname === '192.168.1.229' - if (!TWOMBA_ENABLED || isLocal) { + const ignore = + window.location.host === 'localhost:3000' || + process.env.NEXT_PUBLIC_FIREBASE_ENV === 'DEV' + + if (ignore) { return } - const detectDevTools = () => { - const threshold = 160 - const widthThreshold = window.outerWidth - window.innerWidth > threshold - const heightThreshold = - window.outerHeight - window.innerHeight > threshold + const devtoolsDetector = setupDevtoolsDetector() + setDetector(devtoolsDetector) - if ((widthThreshold || heightThreshold) && !devtoolsOpen) { - setDevtoolsOpen(true) - } + devtoolsDetector.config.onDetectOpen = () => { + setIsDevtoolsOpen(true) } - const intervalId = setInterval(() => { - detectDevTools() - }, 1000) + // Start detecting right away + devtoolsDetector.paused = false - return () => clearInterval(intervalId) + return () => { + // Pause the detector when component unmounts + devtoolsDetector.paused = true + } }, []) - - return devtoolsOpen + return isDevtoolsOpen } // specially treated props that may be present in the server/static props diff --git a/web/pages/about.tsx b/web/pages/about.tsx index cd806fbef2..ca669df147 100644 --- a/web/pages/about.tsx +++ b/web/pages/about.tsx @@ -6,13 +6,11 @@ import { Footer } from 'web/components/footer' import { SEO } from 'web/components/SEO' import { Title } from 'web/components/widgets/title' import { getNativePlatform } from 'web/lib/native/is-native' -import { - ExplainerPanel, - WhatIsManifoldContent, -} from 'web/components/explainer-panel' +import { ExplainerPanel } from 'web/components/explainer-panel' import { LabCard } from './lab' -import { TRADE_TERM } from 'common/envs/constants' +import { TRADE_TERM, TWOMBA_ENABLED } from 'common/envs/constants' import { capitalize } from 'lodash' +import { AboutManifold } from 'web/components/about-manifold' export default function AboutPage() { getNativePlatform() @@ -30,7 +28,9 @@ export default function AboutPage() { About - +
+ +
@@ -68,33 +68,40 @@ export default function AboutPage() {
+ {TWOMBA_ENABLED && ( + + )} - } description="For the fastest help" /> diff --git a/web/pages/election/needle.tsx b/web/pages/election/needle.tsx index 4888c73237..187c4e3af1 100644 --- a/web/pages/election/needle.tsx +++ b/web/pages/election/needle.tsx @@ -20,7 +20,7 @@ function ElectionNeedle({ electionPartyContract }: ElectionNeedleProps) { return ( ) diff --git a/web/pages/gidx/register.tsx b/web/pages/gidx/register.tsx index db717cc24c..60763d5026 100644 --- a/web/pages/gidx/register.tsx +++ b/web/pages/gidx/register.tsx @@ -5,6 +5,8 @@ import { RegisterUserForm } from 'web/components/gidx/register-user-form' import { TWOMBA_ENABLED } from 'common/envs/constants' import { Col } from 'web/components/layout/col' +import { Row } from 'web/components/layout/row' +import { UsOnlyDisclaimer } from 'web/components/twomba/us-only-disclaimer' const HomePage = () => { const user = useUser() @@ -12,9 +14,12 @@ const HomePage = () => { if (!TWOMBA_ENABLED) return null return ( - + + + + {!user || !privateUser ? ( - + ) : ( )} diff --git a/web/pages/home/index.tsx b/web/pages/home/index.tsx index d242e73590..d7ffb1e9b4 100644 --- a/web/pages/home/index.tsx +++ b/web/pages/home/index.tsx @@ -14,6 +14,8 @@ import { Headline } from 'common/news' import { HeadlineTabs } from 'web/components/dashboard/header' import { useRedirectIfSignedOut } from 'web/hooks/use-redirect-if-signed-out' import { Welcome } from 'web/components/onboarding/welcome' +import { TWOMBA_ENABLED } from 'common/envs/constants' +import { TwombaBanner } from 'web/components/nav/banner' export async function getStaticProps() { try { @@ -40,6 +42,9 @@ export default function Home(props: { headlines: Headline[] }) { + + {TWOMBA_ENABLED && } + { const { data } = await db @@ -187,18 +189,12 @@ export default function LandingPage(props: {

{capitalize(TRADE_TERM)} on politics & more

-

- Play-money markets. Real-world accuracy. -

-

- Compete with your friends by {TRADING_TERM} on politics, tech, - sports, and more. It's play money and free to play. -

+ + + + + ) )} diff --git a/web/public/custom-components/sweepiesFlatCoin.tsx b/web/public/custom-components/sweepiesFlatCoin.tsx index e800e23642..da20764b12 100644 --- a/web/public/custom-components/sweepiesFlatCoin.tsx +++ b/web/public/custom-components/sweepiesFlatCoin.tsx @@ -6,7 +6,7 @@ export function SweepiesFlatCoin(props: { className?: string }) { const { className } = props return ( {ENV_CONFIG.moneyMoniker} - [data-custom-class='body'], [data-custom-class='body'] * { - background: transparent !important; - } - [data-custom-class='title'], [data-custom-class='title'] * { - font-family: Arial !important; - font-size: 26px !important; - color: #000000 !important; - } - [data-custom-class='subtitle'], [data-custom-class='subtitle'] * { - font-family: Arial !important; - color: #595959 !important; - font-size: 14px !important; - } - [data-custom-class='heading_1'], [data-custom-class='heading_1'] * { - font-family: Arial !important; - font-size: 19px !important; - color: #000000 !important; - } - [data-custom-class='heading_2'], [data-custom-class='heading_2'] * { - font-family: Arial !important; - font-size: 17px !important; - color: #000000 !important; - } - [data-custom-class='body_text'], [data-custom-class='body_text'] * { - color: #595959 !important; - font-size: 14px !important; - font-family: Arial !important; - } - [data-custom-class='link'], [data-custom-class='link'] * { - color: #3030F1 !important; - font-size: 14px !important; - font-family: Arial !important; - word-break: break-word !important; - } - - -
-
PRIVACY NOTICE

Last updated October 19, 2022



This privacy notice for Manifold Markets, Inc. ("Company," "we," "us," or "our"), describes how and why we might collect, store, use, and/or share ("process") your information when you use our services ("Services"), such as when you:
  • Download and use our mobile application (Manifold), or any other application of ours that links to this privacy notice
  • Engage with us in other related ways, including any sales, marketing, or events
Questions or concerns? Reading this privacy notice will help you understand your privacy rights and choices. If you do not agree with our policies and practices, please do not use our Services. If you still have any questions or concerns, please contact us at help@manifold.markets.


SUMMARY OF KEY POINTS

This summary provides key points from our privacy notice, but you can find out more details about any of these topics by clicking the link following each key point or by using our table of contents below to find the section you are looking for. You can also click here to go directly to our table of contents.

What personal information do we process? When you visit, use, or navigate our Services, we may process personal information depending on how you interact with Manifold Markets, Inc. and the Services, the choices you make, and the products and features you use. Click here to learn more.

Do we process any sensitive personal information? We do not process sensitive personal information.

Do we receive any information from third parties? We do not receive any information from third parties.

How do we process your information? We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent. We process your information only when we have a valid legal reason to do so. Click here to learn more.

In what situations and with which parties do we share personal information? We may share information in specific situations and with specific third parties. Click here to learn more.

How do we keep your information safe? We have organizational and technical processes and procedures in place to protect your personal information. However, no electronic transmission over the internet or information storage technology can be guaranteed to be 100% secure, so we cannot promise or guarantee that hackers, cybercriminals, or other unauthorized third parties will not be able to defeat our security and improperly collect, access, steal, or modify your information. Click here to learn more.

What are your rights? Depending on where you are located geographically, the applicable privacy law may mean you have certain rights regarding your personal information. Click here to learn more.

How do you exercise your rights? The easiest way to exercise your rights is by filling out our data subject request form available here, or by contacting us. We will consider and act upon any request in accordance with applicable data protection laws.

Want to learn more about what Manifold Markets, Inc. does with any information we collect? Click here to review the notice in full.


TABLE OF CONTENTS


1. WHAT INFORMATION DO WE COLLECT?

Personal information you disclose to us

In Short: We collect personal information that you provide to us.

We collect personal information that you voluntarily provide to us when you register on the Services, express an interest in obtaining information about us or our products and Services, when you participate in activities on the Services, or otherwise when you contact us.

Personal Information Provided by You. The personal information that we collect depends on the context of your interactions with us and the Services, the choices you make, and the products and features you use. The personal information we collect may include the following:
  • names
  • phone numbers
  • email addresses
  • usernames
  • passwords
  • billing addresses
  • debit/credit card numbers
Sensitive Information. We do not process sensitive information.

Payment Data. We may collect data necessary to process your payment if you make purchases, such as your payment instrument number, and the security code associated with your payment instrument. All payment data is stored by Stripe. You may find their privacy notice link(s) here: https://stripe.com/privacy.

Social Media Login Data. We may provide you with the option to register with us using your existing social media account details, like your Facebook, Twitter, or other social media account. If you choose to register in this way, we will collect the information described in the section called "HOW DO WE HANDLE YOUR SOCIAL LOGINS?" below.

Application Data. If you use our application(s), we also may collect the following information if you choose to provide us with access or permission:
  • Mobile Device Data. We automatically collect device information (such as your mobile device ID, model, and manufacturer), operating system, version information and system configuration information, device and application identification numbers, browser type and version, hardware model Internet service provider and/or mobile carrier, and Internet Protocol (IP) address (or proxy server). If you are using our application(s), we may also collect information about the phone network associated with your mobile device, your mobile device’s operating system or platform, the type of mobile device you use, your mobile device’s unique device ID, and information about the features of our application(s) you accessed.
  • Push Notifications. We may request to send you push notifications regarding your account or certain features of the application(s). If you wish to opt out from receiving these types of communications, you may turn them off in your device's settings.
This information is primarily needed to maintain the security and operation of our application(s), for troubleshooting, and for our internal analytics and reporting purposes.

All personal information that you provide to us must be true, complete, and accurate, and you must notify us of any changes to such personal information.

Information automatically collected

In Short: Some information — such as your Internet Protocol (IP) address and/or browser and device characteristics — is collected automatically when you visit our Services.

We automatically collect certain information when you visit, use, or navigate the Services. This information does not reveal your specific identity (like your name or contact information) but may include device and usage information, such as your IP address, browser and device characteristics, operating system, language preferences, referring URLs, device name, country, location, information about how and when you use our Services, and other technical information. This information is primarily needed to maintain the security and operation of our Services, and for our internal analytics and reporting purposes.

The information we collect includes:
  • Log and Usage Data. Log and usage data is service-related, diagnostic, usage, and performance information our servers automatically collect when you access or use our Services and which we record in log files. Depending on how you interact with us, this log data may include your IP address, device information, browser type, and settings and information about your activity in the Services (such as the date/time stamps associated with your usage, pages and files viewed, searches, and other actions you take such as which features you use), device event information (such as system activity, error reports (sometimes called "crash dumps"), and hardware settings).
  • Device Data. We collect device data such as information about your computer, phone, tablet, or other device you use to access the Services. Depending on the device used, this device data may include information such as your IP address (or proxy server), device and application identification numbers, location, browser type, hardware model, Internet service provider and/or mobile carrier, operating system, and system configuration information.
2. HOW DO WE PROCESS YOUR INFORMATION?

In Short: We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent.

We process your personal information for a variety of reasons, depending on how you interact with our Services, including:
  • To facilitate account creation and authentication and otherwise manage user accounts. We may process your information so you can create and log in to your account, as well as keep your account in working order.

  • To request feedback. We may process your information when necessary to request feedback and to contact you about your use of our Services.
  • To send you marketing and promotional communications. We may process the personal information you send to us for our marketing purposes, if this is in accordance with your marketing preferences. You can opt out of our marketing emails at any time. For more information, see "WHAT ARE YOUR PRIVACY RIGHTS?" below).
  • To protect our Services. We may process your information as part of our efforts to keep our Services safe and secure, including fraud monitoring and prevention.
  • To identify usage trends. We may process information about how you use our Services to better understand how they are being used so we can improve them.
  • To determine the effectiveness of our marketing and promotional campaigns. We may process your information to better understand how to provide marketing and promotional campaigns that are most relevant to you.
  • To save or protect an individual's vital interest. We may process your information when necessary to save or protect an individual’s vital interest, such as to prevent harm.

3. WHAT LEGAL BASES DO WE RELY ON TO PROCESS YOUR INFORMATION?

In Short: We only process your personal information when we believe it is necessary and we have a valid legal reason (i.e., legal basis) to do so under applicable law, like with your consent, to comply with laws, to provide you with services to enter into or fulfill our contractual obligations, to protect your rights, or to fulfill our legitimate business interests.

If you are located in the EU or UK, this section applies to you.

The General Data Protection Regulation (GDPR) and UK GDPR require us to explain the valid legal bases we rely on in order to process your personal information. As such, we may rely on the following legal bases to process your personal information:
  • Consent. We may process your information if you have given us permission (i.e., consent) to use your personal information for a specific purpose. You can withdraw your consent at any time. Click here to learn more.
  • Legitimate Interests. We may process your information when we believe it is reasonably necessary to achieve our legitimate business interests and those interests do not outweigh your interests and fundamental rights and freedoms. For example, we may process your personal information for some of the purposes described in order to:
  • Send users information about special offers and discounts on our products and services
  • Analyze how our Services are used so we can improve them to engage and retain users
  • Support our marketing activities
  • Diagnose problems and/or prevent fraudulent activities
  • Understand how our users use our products and services so we can improve user experience
  • Legal Obligations. We may process your information where we believe it is necessary for compliance with our legal obligations, such as to cooperate with a law enforcement body or regulatory agency, exercise or defend our legal rights, or disclose your information as evidence in litigation in which we are involved.
  • Vital Interests. We may process your information where we believe it is necessary to protect your vital interests or the vital interests of a third party, such as situations involving potential threats to the safety of any person.

If you are located in Canada, this section applies to you.

We may process your information if you have given us specific permission (i.e., express consent) to use your personal information for a specific purpose, or in situations where your permission can be inferred (i.e., implied consent). You can withdraw your consent at any time. Click here to learn more.

In some exceptional cases, we may be legally permitted under applicable law to process your information without your consent, including, for example:
  • If collection is clearly in the interests of an individual and consent cannot be obtained in a timely way
  • For investigations and fraud detection and prevention
  • For business transactions provided certain conditions are met
  • If it is contained in a witness statement and the collection is necessary to assess, process, or settle an insurance claim
  • For identifying injured, ill, or deceased persons and communicating with next of kin
  • If we have reasonable grounds to believe an individual has been, is, or may be victim of financial abuse
  • If it is reasonable to expect collection and use with consent would compromise the availability or the accuracy of the information and the collection is reasonable for purposes related to investigating a breach of an agreement or a contravention of the laws of Canada or a province
  • If disclosure is required to comply with a subpoena, warrant, court order, or rules of the court relating to the production of records
  • If it was produced by an individual in the course of their employment, business, or profession and the collection is consistent with the purposes for which the information was produced
  • If the collection is solely for journalistic, artistic, or literary purposes
  • If the information is publicly available and is specified by the regulations

4. WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION?

In Short: We may share information in specific situations described in this section and/or with the following third parties.

Vendors, Consultants, and Other Third-Party Service Providers. We may share your data with third-party vendors, service providers, contractors, or agents ("third parties") who perform services for us or on our behalf and require access to such information to do that work. We have contracts in place with our third parties, which are designed to help safeguard your personal information. This means that they cannot do anything with your personal information unless we have instructed them to do it. They will also not share your personal information with any organization apart from us. They also commit to protect the data they hold on our behalf and to retain it for the period we instruct. The third parties we may share personal information with are as follows:
  • Allow Users to Connect to Their Third-Party Accounts
Google account
  • Cloud Computing Services
Google Cloud Platform
  • Functionality and Infrastructure Optimization
Cloud Firestore, Cloud Functions for Firebase and Termly.io
  • Invoice and Billing
Stripe
  • User Account Registration and Authentication
Google OAuth 2.0 and Google Sign-In
  • Web and Mobile Analytics
Google Analytics and Amplitude
  • Website Testing
Google Play Console and TestFlight

We also may need to share your personal information in the following situations:
  • Business Transfers. We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company.
  • Business Partners. We may share your information with our business partners to offer you certain products, services, or promotions.
  • Offer Wall. Our application(s) may display a third-party hosted "offer wall." Such an offer wall allows third-party advertisers to offer virtual currency, gifts, or other items to users in return for the acceptance and completion of an advertisement offer. Such an offer wall may appear in our application(s) and be displayed to you based on certain data, such as your geographic area or demographic information. When you click on an offer wall, you will be brought to an external website belonging to other persons and will leave our application(s). A unique identifier, such as your user ID, will be shared with the offer wall provider in order to prevent fraud and properly credit your account with the relevant reward.

5. HOW DO WE HANDLE YOUR SOCIAL LOGINS?

In Short: If you choose to register or log in to our Services using a social media account, we may have access to certain information about you.

Our Services offer you the ability to register and log in using your third-party social media account details (like your Facebook or Twitter logins). Where you choose to do this, we will receive certain profile information about you from your social media provider. The profile information we receive may vary depending on the social media provider concerned, but will often include your name, email address, friends list, and profile picture, as well as other information you choose to make public on such a social media platform.

We will use the information we receive only for the purposes that are described in this privacy notice or that are otherwise made clear to you on the relevant Services. Please note that we do not control, and are not responsible for, other uses of your personal information by your third-party social media provider. We recommend that you review their privacy notice to understand how they collect, use, and share your personal information, and how you can set your privacy preferences on their sites and apps.

6. HOW LONG DO WE KEEP YOUR INFORMATION?

In Short: We keep your information for as long as necessary to fulfill the purposes outlined in this privacy notice unless otherwise required by law.

We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy notice, unless a longer retention period is required or permitted by law (such as tax, accounting, or other legal requirements). No purpose in this notice will require us keeping your personal information for longer than one hundred (100) months past the termination of the user's account.

When we have no ongoing legitimate business need to process your personal information, we will either delete or anonymize such information, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.

7. HOW DO WE KEEP YOUR INFORMATION SAFE?

In Short: We aim to protect your personal information through a system of organizational and technical security measures.

We have implemented appropriate and reasonable technical and organizational security measures designed to protect the security of any personal information we process. However, despite our safeguards and efforts to secure your information, no electronic transmission over the Internet or information storage technology can be guaranteed to be 100% secure, so we cannot promise or guarantee that hackers, cybercriminals, or other unauthorized third parties will not be able to defeat our security and improperly collect, access, steal, or modify your information. Although we will do our best to protect your personal information, transmission of personal information to and from our Services is at your own risk. You should only access the Services within a secure environment.

8. WHAT ARE YOUR PRIVACY RIGHTS?

In Short: In some regions, such as the European Economic Area (EEA), United Kingdom (UK), and Canada, you have rights that allow you greater access to and control over your personal information. You may review, change, or terminate your account at any time.

In some regions (like the EEA, UK, and Canada), you have certain rights under applicable data protection laws. These may include the right (i) to request access and obtain a copy of your personal information, (ii) to request rectification or erasure; (iii) to restrict the processing of your personal information; and (iv) if applicable, to data portability. In certain circumstances, you may also have the right to object to the processing of your personal information. You can make such a request by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.

We will consider and act upon any request in accordance with applicable data protection laws.
 
If you are located in the EEA or UK and you believe we are unlawfully processing your personal information, you also have the right to complain to your local data protection supervisory authority. You can find their contact details here: https://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm.

If you are located in Switzerland, the contact details for the data protection authorities are available here: https://www.edoeb.admin.ch/edoeb/en/home.html.

Withdrawing your consent: If we are relying on your consent to process your personal information, which may be express and/or implied consent depending on the applicable law, you have the right to withdraw your consent at any time. You can withdraw your consent at any time by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.

However, please note that this will not affect the lawfulness of the processing before its withdrawal nor, when applicable law allows, will it affect the processing of your personal information conducted in reliance on lawful processing grounds other than consent.

Opting out of marketing and promotional communications: You can unsubscribe from our marketing and promotional communications at any time by clicking on the unsubscribe link in the emails that we send, or by contacting us using the details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below. You will then be removed from the marketing lists. However, we may still communicate with you — for example, to send you service-related messages that are necessary for the administration and use of your account, to respond to service requests, or for other non-marketing purposes.

Account Information

If you would at any time like to review or change the information in your account or terminate your account, you can:
  • Log in to your account settings and update your user account.
  • Contact us using the contact information provided.
Upon your request to terminate your account, we will deactivate or delete your account and information from our active databases. However, we may retain some information in our files to prevent fraud, troubleshoot problems, assist with any investigations, enforce our legal terms and/or comply with applicable legal requirements.

If you have questions or comments about your privacy rights, you may email us at help@manifold.markets.

9. CONTROLS FOR DO-NOT-TRACK FEATURES

Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track ("DNT") feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. At this stage no uniform technology standard for recognizing and implementing DNT signals has been finalized. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this privacy notice.

10. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?

In Short: Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information.

California Civil Code Section 1798.83, also known as the "Shine The Light" law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below.

If you are under 18 years of age, reside in California, and have a registered account with Services, you have the right to request removal of unwanted data that you publicly post on the Services. To request removal of such data, please contact us using the contact information provided below and include the email address associated with your account and a statement that you reside in California. We will make sure the data is not publicly displayed on the Services, but please be aware that the data may not be completely or comprehensively removed from all our systems (e.g., backups, etc.).

CCPA Privacy Notice

The California Code of Regulations defines a "resident" as:

(1) every individual who is in the State of California for other than a temporary or transitory purpose and
(2) every individual who is domiciled in the State of California who is outside the State of California for a temporary or transitory purpose

All other individuals are defined as "non-residents."

If this definition of "resident" applies to you, we must adhere to certain rights and obligations regarding your personal information.

What categories of personal information do we collect?

We have collected the following categories of personal information in the past twelve (12) months:

CategoryExamplesCollected
A. Identifiers
Contact details, such as real name, alias, postal address, telephone or mobile contact number, unique personal identifier, online identifier, Internet Protocol address, email address, and account name

YES

B. Personal information categories listed in the California Customer Records statute
Name, contact information, education, employment, employment history, and financial information

YES

C. Protected classification characteristics under California or federal law
Gender and date of birth

NO

D. Commercial information
Transaction information, purchase history, financial details, and payment information

NO

E. Biometric information
Fingerprints and voiceprints

NO

F. Internet or other similar network activity
Browsing history, search history, online behavior, interest data, and interactions with our and other websites, applications, systems, and advertisements

NO

G. Geolocation data
Device location

NO

H. Audio, electronic, visual, thermal, olfactory, or similar information
Images and audio, video or call recordings created in connection with our business activities

NO

I. Professional or employment-related information
Business contact details in order to provide you our Services at a business level or job title, work history, and professional qualifications if you apply for a job with us

NO

J. Education Information
Student records and directory information

NO

K. Inferences drawn from other personal information
Inferences drawn from any of the collected personal information listed above to create a profile or summary about, for example, an individual’s preferences and characteristics

NO


We may also collect other personal information outside of these categories through instances where you interact with us in person, online, or by phone or mail in the context of:
  • Receiving help through our customer support channels;
  • Participation in customer surveys or contests; and
  • Facilitation in the delivery of our Services and to respond to your inquiries.
How do we use and share your personal information?

More information about our data collection and sharing practices can be found in this privacy notice.

You may contact us by email at help@manifold.markets, or by referring to the contact details at the bottom of this document.

If you are using an authorized agent to exercise your right to opt out we may deny a request if the authorized agent does not submit proof that they have been validly authorized to act on your behalf.

Will your information be shared with anyone else?

We may disclose your personal information with our service providers pursuant to a written contract between us and each service provider. Each service provider is a for-profit entity that processes the information on our behalf.

We may use your personal information for our own business purposes, such as for undertaking internal research for technological development and demonstration. This is not considered to be "selling" of your personal information.

Manifold Markets, Inc. has not sold any personal information to third parties for a business or commercial purpose in the preceding twelve (12) months. Manifold Markets, Inc. has disclosed the following categories of personal information to third parties for a business or commercial purpose in the preceding twelve (12) months:

The categories of third parties to whom we disclosed personal information for a business or commercial purpose can be found under "WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION?".

Your rights with respect to your personal data

Right to request deletion of the data — Request to delete

You can ask for the deletion of your personal information. If you ask us to delete your personal information, we will respect your request and delete your personal information, subject to certain exceptions provided by law, such as (but not limited to) the exercise by another consumer of his or her right to free speech, our compliance requirements resulting from a legal obligation, or any processing that may be required to protect against illegal activities.

Right to be informed — Request to know

Depending on the circumstances, you have a right to know:
  • whether we collect and use your personal information;
  • the categories of personal information that we collect;
  • the purposes for which the collected personal information is used;
  • whether we sell your personal information to third parties;
  • the categories of personal information that we sold or disclosed for a business purpose;
  • the categories of third parties to whom the personal information was sold or disclosed for a business purpose; and
  • the business or commercial purpose for collecting or selling personal information.
In accordance with applicable law, we are not obligated to provide or delete consumer information that is de-identified in response to a consumer request or to re-identify individual data to verify a consumer request.

Right to Non-Discrimination for the Exercise of a Consumer’s Privacy Rights

We will not discriminate against you if you exercise your privacy rights.

Verification process

Upon receiving your request, we will need to verify your identity to determine you are the same person about whom we have the information in our system. These verification efforts require us to ask you to provide information so that we can match it with information you have previously provided us. For instance, depending on the type of request you submit, we may ask you to provide certain information so that we can match the information you provide with the information we already have on file, or we may contact you through a communication method (e.g., phone or email) that you have previously provided to us. We may also use other verification methods as the circumstances dictate.

We will only use personal information provided in your request to verify your identity or authority to make the request. To the extent possible, we will avoid requesting additional information from you for the purposes of verification. However, if we cannot verify your identity from the information already maintained by us, we may request that you provide additional information for the purposes of verifying your identity and for security or fraud-prevention purposes. We will delete such additionally provided information as soon as we finish verifying you.

Other privacy rights
  • You may object to the processing of your personal information.
  • You may request correction of your personal data if it is incorrect or no longer relevant, or ask to restrict the processing of the information.
  • You can designate an authorized agent to make a request under the CCPA on your behalf. We may deny a request from an authorized agent that does not submit proof that they have been validly authorized to act on your behalf in accordance with the CCPA.
  • You may request to opt out from future selling of your personal information to third parties. Upon receiving an opt-out request, we will act upon the request as soon as feasibly possible, but no later than fifteen (15) days from the date of the request submission.
To exercise these rights, you can contact us by email at help@manifold.markets, or by referring to the contact details at the bottom of this document. If you have a complaint about how we handle your data, we would like to hear from you.

11. DO WE MAKE UPDATES TO THIS NOTICE?

In Short: Yes, we will update this notice as necessary to stay compliant with relevant laws.

We may update this privacy notice from time to time. The updated version will be indicated by an updated "Revised" date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy notice, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy notice frequently to be informed of how we are protecting your information.

12. HOW CAN YOU CONTACT US ABOUT THIS NOTICE?

If you have questions or comments about this notice, you may email us at help@manifold.markets or by post to:

Manifold Markets, Inc.
1621 E 6th St
Unit #1440
Austin, TX 78702
United States

13. HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?

Based on the applicable laws of your country, you may have the right to request access to the personal information we collect from you, change that information, or delete it. To request to review, update, or delete your personal information, please submit a request form by clicking here.
-
-
- This privacy policy was created using Termly's Privacy Policy Generator. -
\ No newline at end of file diff --git a/web/public/terms.html b/web/public/terms.html deleted file mode 100644 index a8fd9f1668..0000000000 --- a/web/public/terms.html +++ /dev/null @@ -1,2160 +0,0 @@ - - -
-
-
- - - TERMS OF SERVICE - - -
-
-
-
-
-
- Last updated October 27, 2022 -
-
-
-

-
-

-

-
TABLE OF CONTENTS -
-

- - - - - - - - - - - - - - - - - - - - -
- - - - - - 17. COPYRIGHT INFRINGEMENTS - - - - -
- - - - - - - - - - - - - - -

-

-
1. AGREEMENT - TO TERMS
-
-

-
-
These Terms of Use constitute a legally binding - agreement made between you, whether personally or on behalf of an entity (“you”) and Manifold Markets, Inc. - ("Company - ", “we”, “us”, or - “our”), concerning your access to and use of the https://manifold.markets website as well as any other media form, media - channel, mobile website or mobile application related, linked, or otherwise connected thereto - (collectively, the “Site”). - - - - - We are registered in - - - Texas, United States. - - - - - - - You agree that by accessing the Site, - you have read, understood, and agreed to be bound by all of these Terms of Use. IF YOU DO NOT AGREE WITH ALL - OF THESE TERMS OF USE, THEN YOU ARE EXPRESSLY PROHIBITED FROM USING THE SITE AND YOU MUST DISCONTINUE USE - IMMEDIATELY. -
-
-

-
-
Supplemental terms and conditions or documents that may - be posted on the Site from time to time are hereby expressly incorporated herein by reference. We - reserve the right, in our sole discretion, to make changes or modifications to these Terms of Use from time to time. We will alert you - about any changes by updating the “Last updated” date of these Terms of Use, and you waive any right to - receive specific notice of each such change. Please ensure that you check the applicable Terms every - time you use our Site so that you understand which Terms apply. You will be subject to, and will be - deemed to have been made aware of and to have accepted, the changes in any revised Terms of Use by your - continued use of the Site after the date such revised Terms of Use are posted.
-
-

-
-
The information provided on the Site is not intended for - distribution to or use by any person or entity in any jurisdiction or country where such distribution or - use would be contrary to law or regulation or which would subject us to any registration requirement - within such jurisdiction or country. Accordingly, those persons who choose to access the Site from other - locations do so on their own initiative and are solely responsible for compliance with local laws, if - and to the extent local laws are applicable.
-
- - - - -
-

-
The Site is not tailored to comply with - industry-specific regulations (Health Insurance Portability and Accountability Act (HIPAA), Federal - Information Security Management Act (FISMA), etc.), so if your interactions would be subjected to - such laws, you may not use this Site. You may not use the Site in a way that would violate the - Gramm-Leach-Bliley Act (GLBA). - - - - - -
-
-

-
-
- - - - - - - The Site is intended - for users who are at least 13 years of age. All users who are minors in the - jurisdiction in which they reside (generally under the age of 18) must have - the permission of, and be directly supervised by, their parent or guardian - to use the Site. If you are a minor, you must have your parent or guardian - read and agree to these Terms of Use prior to you using the Site. - - - - - - -
-
-

-

-
-
2. INTELLECTUAL - PROPERTY RIGHTS
-
-

-
-
Unless otherwise - indicated, the Site is our proprietary property and all source code, databases, - functionality, software, website designs, audio, video, text, photographs, and - graphics on the Site (collectively, the “Content”) and the trademarks, service - marks, and logos contained therein (the “Marks”) are owned or controlled by us or - licensed to us, and are protected by copyright and trademark laws and various - other intellectual property rights and unfair competition laws of the United - States, international copyright laws, and international conventions. The Content and the Marks are - provided on the - Site “AS IS” for your information and personal use only. Except as expressly provided in these Terms - of Use, no part of the Site and no Content or Marks may be copied, reproduced, - aggregated, republished, uploaded, posted, publicly displayed, encoded, - translated, transmitted, distributed, sold, licensed, or otherwise exploited - for any commercial purpose whatsoever, without our express prior written - permission.
-
-

-
-
Provided that you - are eligible to use the Site, you are granted a limited license to access and - use the Site and to download or print a copy of any portion of the Content to - which you have properly gained access solely for your personal, non-commercial - use. We reserve all rights not expressly granted to you in and to the Site, the Content and the - Marks.
-
-

-

-
-
3. USER - REPRESENTATIONS
-
-

-
-
By using the Site, you represent and warrant - that: - - - - - (1) all registration information you submit - will be true, accurate, current, and complete; (2) you will maintain the accuracy of such - information and promptly update such registration information as necessary; - -   - (3) you have the legal capacity and you agree to comply - with these Terms of Use; - - - - (4) you are not under the age of 13; - - -   - (5) you are not a - minor in the jurisdiction in which you reside - - - - , or if a minor, you have - received parental permission to use the Site - - - ; (6) you will not access the Site - through automated or non-human means, whether through a bot, script or - otherwise; (7) you will not use the Site for any illegal or - unauthorized - purpose; and (8) your use of the Site - will not violate any applicable law or regulation. -
-
-

-
-
-
-
If you provide any - information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend - or terminate your account and refuse any and all current or future use of the Site (or any - portion thereof).
-
- -
-

-

-
- -
- - -
4. USER - REGISTRATION
-
-
-
-

-
- - -
You may be - required to register with the Site. You agree to keep your password confidential and - will be responsible for all use of your account and password. We reserve the right to - remove, reclaim, or change a username you select if we determine, in our sole - discretion, that such username is inappropriate, obscene, or otherwise objectionable. - -
-
-
-
-

-

-
- - - -
5. PRODUCTS -
-
-

-
-
- - - - - All products are subject to availability - - - . We reserve the right to - discontinue any products at any time for any reason. Prices for all products - are subject to change. -
-
- - -

-
5.5. CHARITABLE - DONATIONS -
-
-

-
-
- - - - We may partner with external charities such as Manifold for Charity to issue charitable - donations - requested by our users as part of our charitable donations program. - We reserve the right to end, cancel, or discontinue the charitable donations program at any time - for any reason and to retroactively cancel any previous commitment we have made to donate to any - particular party. - - -
-
- -

-

-
-
6. PURCHASES - AND PAYMENT
-
-

-
-
We accept the following forms of payment:
-
-

-
-
- -  Visa -
-
- -  Mastercard -
-
- -  Discover -
-
- -  American Express -
-
- -
-

-
You agree to provide current, complete, and accurate - purchase and account information for all purchases made via the Site. You further agree to promptly - update account and payment information, including email address, payment method, and payment card - expiration date, so that we can complete your transactions and contact you as needed. Sales tax will be - added to the price of purchases as deemed required by us. We may change prices at any time. All payments - shall be in U.S. dollars.
-
-

-
-
You agree to pay all charges at the prices then in - effect for your purchases and any applicable shipping fees, and you authorize us to charge your chosen - payment provider for any such amounts upon placing your order. - - - We reserve the right to correct - any errors or mistakes in pricing, even if we have already requested or - received payment.
-
-

-
-
We reserve the - right to refuse any order placed through the Site. We may, in our sole discretion, limit or - cancel quantities purchased per person, per household, or per order. These restrictions may include - orders placed - by or under the same customer account, the same payment method, and/or orders - that use the same billing or shipping address. We reserve the right to limit or prohibit orders that, in - our sole - judgment, appear to be placed by dealers, resellers, or distributors.
-
- - - -
-

-

-
- - -
- - - - 7.  - - REFUNDS - - - -  POLICY -
-
-
-
-

-
- - -
- All sales are - final and no refund will be issued. - - -
-
-
-
-
- - -

-
-

-
-
8. PROHIBITED - ACTIVITIES
-
-

-
-
You may not access or use - the Site for any purpose other than that for which we make the Site available. The Site may not be - used in connection with any commercial endeavors except those that are specifically endorsed or - approved by us.
-
-

-
-
-
-
-
- As a user of - the Site, you agree not to: -
-
-
    -
  • - Systematically - retrieve data or other content from the Site to create or compile, directly or - indirectly, a collection, compilation, database, or directory without written - permission from us. -
  • -
  • - Trick, - defraud, or mislead us and other users, especially in any attempt to - learn sensitive account information such as user - passwords. -
  • -
  • - Circumvent, - disable, or otherwise interfere with security-related features of the - Site, including features that prevent or restrict the use or copying of - any Content or enforce limitations on the use of the Site and/or the - Content contained therein. -
  • -
  • - Disparage, - tarnish, or otherwise harm, in our opinion, us and/or the - Site. -
  • -
  • - Use - any information obtained from the Site in order to harass, abuse, or - harm another person. -
  • -
  • - Make - improper use of our support services or submit false reports of abuse or - misconduct. -
  • -
  • - Use - the Site in a manner inconsistent with any applicable laws or - regulations. -
  • -
  • - Engage - in unauthorized framing of or linking to the - Site. -
  • -
  • - Upload - or transmit (or attempt to upload or to transmit) viruses, Trojan - horses, or other material, including excessive use of capital letters - and spamming (continuous posting of repetitive text), that interferes - with any party’s uninterrupted use and enjoyment of the Site or - modifies, impairs, disrupts, alters, or interferes with the use, - features, functions, operation, or maintenance of the - Site. -
  • -
  • - Engage - in any automated use of the system, such as using scripts to send - comments or messages, or using any data mining, robots, or similar data - gathering and extraction tools. -
  • -
  • - Delete - the copyright or other proprietary rights notice from any - Content. -
  • -
  • - Attempt - to impersonate another user or person or use the username of another - user. -
  • -
  • - Upload - or transmit (or attempt to upload or to transmit) any material that acts - as a passive or active information collection or transmission mechanism, - including without limitation, clear graphics interchange formats - (“gifs”), 1Ă—1 pixels, web bugs, cookies, or other similar devices - (sometimes referred to as “spyware” or “passive collection mechanisms” - or “pcms”). -
  • -
  • - Interfere - with, disrupt, or create an undue burden on the Site or the networks or - services connected to the Site. -
  • -
  • - Harass, - annoy, intimidate, or threaten any of our employees or agents engaged in - providing any portion of the Site to - you. -
  • -
  • - Attempt - to bypass any measures of the Site designed to prevent or restrict - access to the Site, or any portion of the - Site. -
  • -
  • - Copy - or adapt the Site’s software, including but not limited to Flash, PHP, - HTML, JavaScript, or other code. -
  • -
  • - Except - as permitted by applicable law, decipher, decompile, disassemble, or - reverse engineer any of the software comprising or in any way making up - a part of the Site. -
  • -
  • - Except - as may be the result of standard search engine or Internet browser - usage, use, launch, develop, or distribute any automated system, - including without limitation, any spider, robot, cheat utility, scraper, - or offline reader that accesses the Site, or using or launching any - unauthorized script or other - software. -
  • -
  • - Use - a buying agent or purchasing agent to make purchases on the - Site. -
  • -
  • - Make - any unauthorized use of the Site, including collecting usernames and/or - email addresses of users by electronic or other means for the purpose of - sending unsolicited email, or creating user accounts by automated means - or under false pretenses. -
  • -
  • - Use - the Site as part of any effort to compete with us or otherwise use the - Site and/or the Content for any revenue-generating endeavor or - commercial enterprise. - - -
  • -
  • - - Use the Site to advertise or offer to sell goods and services. - - - - -
  • -
  • - - Sell or otherwise transfer your profile. - - - -
  • -
  • - - Spamming or posting unsolicited commercical content - - - -
  • -
-
-

-
-

-
-
- - - -
- 9. USER - GENERATED CONTRIBUTIONS -
-
-
-
-
-

-
- - - -
- - - - - The Site may invite you to chat, contribute to, or participate in blogs, - message boards, online forums, and other functionality, and may provide you with - the opportunity to create, submit, post, display, transmit, perform, publish, - distribute, or broadcast content and materials to us or on the Site, including - but not limited to text, writings, video, audio, photographs, graphics, - comments, suggestions, or personal information or other material (collectively, - "Contributions"). Contributions may be viewable by other users of the Site and - the Marketplace Offerings and through third-party websites. As such, any - Contributions you transmit may be treated as non-confidential and - non-proprietary. When you create or make available any Contributions, you - thereby represent and warrant that: -
-
-
-
-
-
-
-
    -
  • The creation, distribution, - transmission, public display, or performance, and the accessing, downloading, or copying of - your Contributions do not and will not infringe the proprietary rights, including but not - limited to the copyright, patent, trademark, trade secret, or moral rights of any third - party.
  • -
  • You are the creator and owner of or - have the necessary licenses, rights, consents, releases, and permissions to use and to - authorize us, the Site, and other users of the Site to use your Contributions in any manner - contemplated by the Site and these Terms of Use.
  • -
  • You have the written consent, - release, and/or permission of each and every identifiable individual person in your - Contributions to use the name or likeness of each and every such identifiable individual - person to enable inclusion and use of your Contributions in any manner contemplated by the - Site and these Terms of Use.
  • -
  • Your Contributions are not false, - inaccurate, or misleading.
  • -
  • Your Contributions are not - unsolicited or unauthorized advertising, promotional materials, pyramid schemes, chain - letters, spam, mass mailings, or other forms of solicitation.
  • -
  • Your Contributions are not obscene, - lewd, lascivious, filthy, violent, harassing, libelous, slanderous, or otherwise - objectionable (as determined by us).
  • -
  • Your Contributions do not ridicule, - mock, disparage, intimidate, or abuse anyone.
  • -
  • Your Contributions are not used to - harass or threaten (in the legal sense of those terms) any other person and to promote - violence against a specific person or class of people.
  • -
  • Your Contributions do not violate - any applicable law, regulation, or rule.
  • -
  • Your Contributions do not violate - the privacy or publicity rights of any third party.
  • -
  • Your Contributions do not violate - any applicable law concerning child pornography, or otherwise intended to protect the health - or well-being of minors;
  • -
  • Your Contributions do not include - any offensive comments that are connected to race, national origin, gender, sexual - preference, or physical handicap.
  • -
  • Your Contributions do not otherwise - violate, or link to material that violates, any provision of these Terms of Use, or any - applicable law or regulation.
  • -
-
- - - -
Any use of the - Site or the Marketplace Offerings in violation of the foregoing violates these Terms of - Use and may result in, among other things, termination or suspension of your rights to - use the Site and the Marketplace Offerings.
-
-
-
-
-

-

-
- - - -
- 10. CONTRIBUTION - LICENSE -
-
-
-
-
-

-
- - - - - - - - - -
By posting your - Contributions to any part of the Site - - - -  or making Contributions accessible to the Site by linking - your account from the Site to any of your social networking accounts - - - , you automatically grant, and you represent and warrant that you have the right - to grant, to us an unrestricted, unlimited, irrevocable, perpetual, non-exclusive, - transferable, royalty-free, fully-paid, worldwide right, and license to host, use, copy, - reproduce, disclose, sell, resell, publish, broadcast, retitle, archive, store, cache, - publicly perform, publicly display, reformat, translate, transmit, excerpt (in whole or - in part), and distribute such Contributions (including, without limitation, your image - and voice) for any purpose, commercial, advertising, or otherwise, and to prepare - derivative works of, or incorporate into other works, such Contributions, and grant and - authorize sublicenses of the foregoing. The use and distribution may occur in any media - formats and through any media channels.
-
-
-
-
-

-
- - - -
This license - will apply to any form, media, or technology now known or hereafter developed, and - includes our use of your name, company name, and franchise name, as applicable, and any - of the trademarks, service marks, trade names, logos, and personal and commercial images - you provide. You waive all moral rights in your Contributions, and you warrant that - moral rights have not otherwise been asserted in your Contributions.
-
-
-
-
-

-
- - - -
We do not - assert any ownership over your Contributions. You retain full ownership of all of your - Contributions and any intellectual property rights or other proprietary rights - associated with your Contributions. We are not liable for any statements or - representations in your Contributions provided by you in any area on the Site. You are - solely responsible for your Contributions to the Site and you expressly agree to - exonerate us from any and all responsibility and to refrain from any legal action - against us regarding your Contributions.
-
-
-
-
-

-
- - - -
We have the - right, in our sole and absolute discretion, (1) to edit, redact, or otherwise change any - Contributions; (2) to re-categorize any Contributions to place them in more appropriate - locations on the Site; and (3) to pre-screen or delete any Contributions at any time and - for any reason, without notice. We have no obligation to monitor your - Contributions.
-
-
-
-
-
-

-

-
-
- - - - - -
-
- - - - -
-
- - - - - - -
-
11. MOBILE - APPLICATION LICENSE
-

-
Use - License
-

-
If you access the Marketplace - Offerings via a mobile application, then we grant you a revocable, non-exclusive, non-transferable, - limited right to install and use the mobile application on wireless electronic devices owned or - controlled by you, and to access and use the mobile application on such devices strictly in accordance - with the terms and conditions of this mobile application license contained in these Terms of Use. You - shall not: (1) except as permitted by applicable law, decompile, reverse engineer, disassemble, attempt - to derive the source code of, or decrypt the application; (2) make any modification, adaptation, - improvement, enhancement, translation, or derivative work from the application; (3) violate any - applicable laws, rules, or regulations in connection with your access or use of the application; (4) - remove, alter, or obscure any proprietary notice (including any notice of copyright or trademark) posted - by us or the licensors of the application; (5) use the application for any revenue generating endeavor, - commercial enterprise, or other purpose for which it is not designed or intended; (6) make the - application available over a network or other environment permitting access or use by multiple devices - or users at the same time; (7) use the application for creating a product, service, or software that is, - directly or indirectly, competitive with or in any way a substitute for the application; (8) use the - application to send automated queries to any website or to send any unsolicited commercial e-mail; or - (9) use any proprietary information or any of our interfaces or our other intellectual property in the - design, development, manufacture, licensing, or distribution of any applications, accessories, or - devices for use with the application.
-

-
Apple and Android - Devices
-

-
The following terms apply when - you use a mobile application obtained from either the Apple Store or Google Play (each an “App - Distributor”) to access the Marketplace Offerings: (1) the license granted to you for our mobile - application is limited to a non-transferable license to use the application on a device that utilizes - the Apple iOS or Android operating systems, as applicable, and in accordance with the usage rules set - forth in the applicable App Distributor’s terms of service; (2) we are responsible for providing any - maintenance and support services with respect to the mobile application as specified in the terms and - conditions of this mobile application license contained in these Terms of Use or as otherwise required - under applicable law, and you acknowledge that each App Distributor has no obligation whatsoever to - furnish any maintenance and support services with respect to the mobile application; (3) in the event of - any failure of the mobile application to conform to any applicable warranty, you may notify the - applicable App Distributor, and the App Distributor, in accordance with its terms and policies, may - refund the purchase price, if any, paid for the mobile application, and to the maximum extent permitted - by applicable law, the App Distributor will have no other warranty obligation whatsoever with respect to - the mobile application; (4) you represent and warrant that (i) you are not located in a country that is - subject to a U.S. government embargo, or that has been designated by the U.S. government as a “terrorist - supporting” country and (ii) you are not listed on any U.S. government list of prohibited or restricted - parties; (5) you must comply with applicable third-party terms of agreement when using the mobile - application, e.g., if you have a VoIP application, then you must not be in violation of their wireless - data service agreement when using the mobile application; and (6) you acknowledge and agree that the App - Distributors are third-party beneficiaries of the terms and conditions in this mobile application - license contained in these Terms of Use, and that each App Distributor will have the right (and will be - deemed to have accepted the right) to enforce the terms and conditions in this mobile application - license contained in these Terms of Use against you as a third-party beneficiary thereof.
-

-

-
- - - -
-
- - - - - - -
-
- 12. SOCIAL - MEDIA -
-

- - - -
As part of the - functionality of the Site, you may link your account with online accounts you have with - third-party service providers (each such account, a “Third-Party Account”) by either: - (1) providing your Third-Party Account login information through the Site; or (2) - allowing us to access your Third-Party - Account, as is permitted under the applicable terms and conditions that govern your use - of each Third-Party Account. You represent - and warrant that you are entitled to disclose your Third-Party Account login information to us - and/or grant us access to your Third-Party - Account, without breach by you of any of the terms and conditions that govern your use - of the applicable Third-Party Account, and - without obligating us to pay any fees or making us subject to any usage limitations - imposed by the third-party service provider of the Third-Party Account. By granting us access to - any Third-Party Accounts, you understand that - (1) we may access, make available, and store (if applicable) any content that you have - provided to and stored in your Third-Party - Account (the “Social Network Content”) so that it is available on and through the Site - via your account, including without limitation any friend lists and (2) we may submit to - and receive from your Third-Party Account - additional information to the extent you are notified when you link your account with - the Third-Party Account. Depending on the - Third-Party Accounts you choose and subject - to the privacy settings that you have set in such Third-Party Accounts, personally identifiable - information that you post to your Third-Party - Accounts may be available on and through your account on the Site. Please note that if a - Third-Party Account or associated service - becomes unavailable or our access to such Third-Party Account is terminated by the - third-party service provider, then Social Network Content may no longer be available on - and through the Site. You will have the ability to disable the connection between your - account on the Site and your Third-Party - Accounts at any time. PLEASE NOTE THAT YOUR RELATIONSHIP WITH THE THIRD-PARTY SERVICE - PROVIDERS ASSOCIATED WITH YOUR THIRD-PARTY ACCOUNTS IS GOVERNED SOLELY BY YOUR - AGREEMENT(S) WITH SUCH THIRD-PARTY SERVICE PROVIDERS. We make no effort to review any - Social Network Content for any purpose, including but not limited to, for accuracy, - legality, or non-infringement, and we are not responsible for any Social Network - Content. You acknowledge and agree that we may access your email address book associated - with a Third-Party Account and your contacts - list stored on your mobile device or tablet computer solely for purposes of identifying - and informing you of those contacts who have also registered to use the Site. You can - deactivate the connection between the Site and your Third-Party Account by contacting us using the - contact information below or through your account settings (if applicable). We will - attempt to delete any information stored on our servers that was obtained through such - Third-Party Account, except the username and - profile picture that become associated with your account.
-
-
-
-
-

-

-
- - - -
-
-
-
-
-
13. SUBMISSIONS -
-

-
You acknowledge and agree that - any questions, comments, suggestions, ideas, feedback, or other information regarding the Site or the - Marketplace Offerings ("Submissions") provided by you to us are non-confidential and shall become our sole - property. We shall own exclusive rights, including all intellectual property rights, and shall be entitled - to the unrestricted use and dissemination of these Submissions for any lawful purpose, commercial or - otherwise, without acknowledgment or compensation to you. You hereby waive all moral rights to any such - Submissions, and you hereby warrant that any such Submissions are original with you or that you have the - right to submit such Submissions. You agree there shall be no recourse against us for any alleged or actual - infringement or misappropriation of any proprietary right in your Submissions.
-

-

-
- - - - - - -
-
- 14. THIRD-PARTY - WEBSITES AND CONTENT -
-

-
The Site may contain (or you - may be sent via the Site or the Marketplace Offerings) links to other websites ("Third-Party Websites") as well as articles, photographs, text, - graphics, pictures, designs, music, sound, video, information, applications, software, and other content - or items belonging to or originating from third parties ("Third-Party Content"). Such Third-Party Websites and Third-Party Content are not investigated, monitored, or checked - for accuracy, appropriateness, or completeness by us, and we are not responsible for any Third Party - Websites accessed through the Site or any Third-Party Content - posted on, available through, or installed from the Site, including the content, accuracy, - offensiveness, opinions, reliability, privacy practices, or other policies of or contained in the Third-Party Websites or the Third-Party Content. Inclusion of, linking to, or permitting - the use or installation of any Third-Party Websites or any - Third-PartyContent does not imply approval or endorsement - thereof by us. If you decide to leave the Site and access the Third-Party Websites or to use or install any Third-Party Content, you do so at your own risk, and you should - be aware these Terms of Use no longer govern. You should review the applicable terms and policies, - including privacy and data gathering practices, of any website to which you navigate from the Site or - relating to any applications you use or install from the Site. Any purchases you make through Third-Party Websites will be through other websites and from - other companies, and we take no responsibility whatsoever in relation to such purchases which are - exclusively between you and the applicable third party. You agree and acknowledge that we do not endorse - the products or services offered on Third-Party Websites and - you shall hold us harmless from any harm caused by your purchase of such products or services. - Additionally, you shall hold us harmless from any losses sustained by you or harm caused to you relating - to or resulting in any way from any Third-Party Content or - any contact with Third-Party Websites.
-

-

-
- - - -
-
- - - - - -
-
15. SITE - MANAGEMENT
-

-
We reserve the right, but not the - obligation, to: (1) monitor the Site for violations of these Terms of Use; (2) take appropriate legal action - against anyone who, in our sole discretion, violates the law or these Terms of Use, including without - limitation, reporting such user to law enforcement authorities; (3) in our sole discretion and without - limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically - feasible) any of your Contributions or any portion thereof; (4) in our sole discretion and without - limitation, notice, or liability, to remove from the Site or otherwise disable all files and content that - are excessive in size or are in any way burdensome to our systems; and (5) otherwise manage the Site in a - manner designed to protect our rights and property and to facilitate the proper functioning of the Site and - the Marketplace Offerings.
-

-

-
- - - - - - -
-
- 16. PRIVACY - POLICY -
-

-
We care about data privacy and - security. Please review our Privacy Policy:  - https://manifold.markets/privacy. By using the Site or the Marketplace Offerings, - you agree to be bound by our Privacy Policy, which is incorporated into these Terms of Use. Please be - advised the Site and the Marketplace Offerings are hosted in the United States - . If you access the Site or the Marketplace Offerings from any other - region of the world with laws or other requirements governing personal data collection, use, or - disclosure that differ from applicable laws in - the United States - - , then through your continued use of the Site, you are transferring your data to - the United States - - , and you expressly consent to have your data transferred to and processed in - the United States - - . - - - - - Further, we do not knowingly accept, request, or solicit information from - children or knowingly market to children. Therefore, in accordance with the U.S. Children’s - Online Privacy Protection Act, if we receive actual knowledge that anyone under the age of - 13 has provided personal information to us without the requisite and verifiable parental - consent, we will delete that information from the Site as quickly as is reasonably - practical. - - - - - -
-

-

-
- - - - - - - - - - - - - - - -
-
- - - - - - - - - -
-
- - - - - - -
- -

-
We respect the intellectual - property rights of others. If you believe that any material available on or through the Site infringes - upon any copyright you own or control, please immediately notify us using the contact information - provided below (a “Notification”). A copy of your Notification will be sent to the person who posted or - stored the material addressed in the Notification. Please be advised that pursuant to applicable law you - may be held liable for damages if you make material misrepresentations in a Notification. Thus, if you - are not sure that material located on or linked to by the Site infringes your copyright, you should - consider first contacting an attorney.
-

-

-
- - - - -
-
- 18. TERM - AND TERMINATION -
-

-
These Terms of Use shall remain - in full force and effect while you use the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS OF - USE, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND - USE OF THE SITE AND THE MARKETPLACE OFFERINGS (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON - FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, - WARRANTY, OR COVENANT CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR REGULATION. WE MAY - TERMINATE YOUR USE OR PARTICIPATION IN THE SITE AND THE MARKETPLACE OFFERINGS OR DELETE - - - - YOUR ACCOUNT AND  - - - ANY CONTENT OR INFORMATION THAT YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE - DISCRETION.
-

-
If we terminate or suspend your - account for any reason, you are prohibited from registering and creating a new account under your name, - a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the - third party. In addition to terminating or suspending your account, we reserve the right to take - appropriate legal action, including without limitation pursuing civil, criminal, and injunctive - redress.
-

-

-
- 19. MODIFICATIONS - AND INTERRUPTIONS -
-

-
We reserve the right to change, - modify, or remove the contents of the Site at any time or for any reason at our sole discretion without - notice. However, we have no obligation to update any information on our Site. We also reserve the right - to modify or discontinue all or part of the Marketplace Offerings without notice at any time. We will - not be liable to you or any third party for any modification, price change, suspension, or - discontinuance of the Site or the Marketplace Offerings.
-

-
We cannot guarantee the Site - and the Marketplace Offerings will be available at all times. We may experience hardware, software, or - other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, - or errors. We reserve the right to change, revise, update, suspend, discontinue, or otherwise modify the - Site or the Marketplace Offerings at any time or for any reason without notice to you. You agree that we - have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access - or use the Site or the Marketplace Offerings during any downtime or discontinuance of the Site or the - Marketplace Offerings. Nothing in these Terms of Use will be construed to obligate us to maintain and - support the Site or the Marketplace Offerings or to supply any corrections, updates, or releases in - connection therewith.
-

-

-
- 20. GOVERNING - LAW -
-

-
- -
-
These Terms of Use and your use - of the Site and the Marketplace Offerings are governed by and construed in accordance with the laws of - - - - - the State of Delaware - - - - applicable to agreements made and to be entirely performed within -   - - - - the State of Delaware - - - - - , without regard to its conflict of law - principles. -
-

-

-
- 21. DISPUTE - RESOLUTION -
-

-
- - -
-
- -
-
- Informal Negotiations -
-

-
To expedite resolution and control the cost of any dispute, controversy, or - claim related to these Terms of Use (each "Dispute" and collectively, the “Disputes”) brought by either - you or us (individually, a “Party” and collectively, the “Parties”), the Parties agree to first attempt - to negotiate any Dispute (except those Disputes expressly provided below) informally for at least thirty (30) days before initiating arbitration. Such informal negotiations - commence upon written notice from one Party to the other Party.
-

-
- -
- -
Binding - Arbitration
-

-
- If - the Parties are unable to resolve a Dispute through informal negotiations, the Dispute (except those - Disputes expressly excluded below) will be finally and exclusively resolved by binding arbitration. YOU - UNDERSTAND THAT WITHOUT THIS PROVISION, YOU WOULD HAVE THE RIGHT TO SUE IN COURT AND HAVE A JURY TRIAL. - The arbitration shall be commenced and conducted under the Commercial Arbitration Rules of the American - Arbitration Association ("AAA") and, where appropriate, the AAA’s Supplementary Procedures for Consumer - Related Disputes ("AAA Consumer Rules"), both of which are available at the AAA website www.adr.org. Your - arbitration fees and your share of arbitrator compensation shall be governed by the AAA Consumer Rules - and, where appropriate, limited by the AAA Consumer Rules. The - arbitration may be conducted in person, through the submission of documents, by phone, or online. The - arbitrator will make a decision in writing, but need not provide a statement of reasons unless requested - by either Party. The arbitrator must follow applicable law, and any award may be challenged if the - arbitrator fails to do so. Except where otherwise required by the applicable AAA rules or applicable - law, the arbitration will take place in - United States, - - Delaware - . Except as otherwise provided herein, the Parties may - litigate in court to compel arbitration, stay proceedings pending arbitration, or to confirm, modify, - vacate, or enter judgment on the award entered by the arbitrator. - -
-

-
If for any reason, a Dispute proceeds in court rather than arbitration, the - Dispute shall be commenced or prosecuted in the -  state and - federal courts -  located - in - - - Delaware - , and - the Parties hereby consent to, and waive all defenses of lack of personal jurisdiction, and forum non - conveniens with respect to venue and jurisdiction in such state and - federal courts. Application of the United Nations - Convention on Contracts for the International Sale of Goods and the Uniform Computer Information - Transaction Act (UCITA) are excluded from these Terms of Use. -
-

-
- In no event shall any Dispute brought by either Party related in any - way to the Site be commenced more than one (1) years after the cause of - action arose. If this provision is found to be illegal or - unenforceable, then neither Party will elect to arbitrate any Dispute falling within that portion of - this provision found to be illegal or unenforceable and such Dispute shall be decided by a court of - competent jurisdiction within the courts listed for jurisdiction above, and the Parties agree to submit - to the personal jurisdiction of that court. - -
- - - -

-
- Restrictions -
-

-
The Parties - agree that any arbitration shall be limited to the Dispute between the Parties individually. To the full - extent permitted by law, (a) no arbitration shall be joined with any other proceeding; (b) there is no right - or authority for any Dispute to be arbitrated on a class-action basis or to utilize class action procedures; - and (c) there is no right or authority for any Dispute to be brought in a purported representative capacity - on behalf of the general public or any other persons.
-

-
- Exceptions to Informal Negotiations and Arbitration - -
-

-
- The Parties agree that the following Disputes are not subject to the - above provisions concerning informal negotiations binding arbitration: (a) any Disputes seeking to enforce - or protect, or concerning the validity of, any of the intellectual property rights of a Party; (b) any - Dispute related to, or arising from, allegations of theft, piracy, invasion of privacy, or unauthorized use; - and (c) any claim for injunctive relief. If this provision is found to be illegal or unenforceable, then - neither Party will elect to arbitrate any Dispute falling within that portion of this provision found to be - illegal or unenforceable and such Dispute shall be decided by a court of competent jurisdiction within the - courts listed for jurisdiction above, and the Parties agree to submit to the personal jurisdiction of that - court. -
-
- - - -
-

-

-
- 22. CORRECTIONS -
-

-
There may be - information on the Site that contains typographical errors, inaccuracies, or omissions that may relate to - the Marketplace Offerings, including descriptions, pricing, availability, and various other information. We - reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information - on the Site at any time, without prior notice.
-

-

-
- 23. DISCLAIMER -
-

-
THE SITE IS PROVIDED - ON AN AS-IS AND AS-AVAILABLE BASIS. YOU - AGREE THAT YOUR USE OF THE SITE SERVICES WILL BE AT YOUR SOLE RISK. TO THE - FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR - IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING, WITHOUT - LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS ABOUT - THE ACCURACY OR COMPLETENESS OF THE SITE’S CONTENT OR THE CONTENT OF ANY - WEBSITES LINKED TO THIS SITE AND WE WILL ASSUME NO LIABILITY OR RESPONSIBILITY - FOR ANY (1) ERRORS, MISTAKES, OR INACCURACIES OF CONTENT AND MATERIALS, (2) - PERSONAL INJURY OR PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM - YOUR ACCESS TO AND USE OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF - OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL - INFORMATION STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION - TO OR FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH - MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6) ANY - ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR DAMAGE OF - ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR - OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT WARRANT, ENDORSE, GUARANTEE, - OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A - THIRD PARTY THROUGH THE SITE, ANY HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE - APPLICATION FEATURED IN ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A - PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU - AND ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. AS WITH THE - PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU - SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE.
-

-

-
- 24. LIMITATIONS - OF LIABILITY -
-

-
IN NO EVENT WILL WE - OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, - CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST - REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR USE OF THE SITE, EVEN IF WE HAVE BEEN - ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - - - NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR - LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL - AT ALL TIMES BE LIMITED TO - - - THE LESSER OF THE AMOUNT PAID, IF ANY, BY YOU TO US - - DURING - THE six (6) MONTH PERIOD PRIOR TO ANY - CAUSE OF ACTION ARISING - - OR - __________ - - - - - .  - - CERTAIN US STATE LAWS AND INTERNATIONAL LAWS - DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF - CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS OR - LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS. - - - - - -
-

-

-
25. INDEMNIFICATION -
-

-
You agree to - defend, indemnify, and hold us harmless, including our subsidiaries, - affiliates, and all of our respective officers, agents, partners, and - employees, from and against any loss, damage, liability, claim, or demand, including - reasonable attorneys’ fees and expenses, made by any third party due to or - arising out of: - - - (1) your Contributions;  - - - (2) use of the Site; (3) breach of these Terms of Use; (4) any breach of your representations and warranties set forth - in these Terms of Use; (5) your violation of the rights of a - third party, including but not limited to intellectual property rights; or (6) any overt harmful act toward any other user of the Site with - whom you connected via the Site. Notwithstanding the foregoing, we reserve the right, at your expense, - to assume the exclusive defense and control of any matter for which you are required to indemnify us, - and you agree to cooperate, at your expense, with our defense of such claims. We will use reasonable - efforts to notify you of any such claim, action, or proceeding which is subject to this indemnification - upon becoming aware of it.
-

-

-
- 26. USER - DATA -
-

-
We will maintain - certain data that you transmit to the Site for the purpose of managing the - performance of the Site, as well as data relating to your use of the Site. Although we perform regular - routine backups - of data, you are solely responsible for all data that you transmit or that - relates to any activity you have undertaken using the Site. You agree - that we shall have no liability to you for any loss or corruption of any such - data, and you hereby waive any right of action against us arising from any such - loss or corruption of such data.
-

-

-
- 27. ELECTRONIC - COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES -
-

-
Visiting the Site, sending us emails, and completing - online forms constitute electronic communications. You consent to receive electronic communications, and - you agree that all agreements, notices, disclosures, and other communications we provide to you - electronically, via email and on the Site, satisfy any legal requirement that such communication be in - writing. YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES, CONTRACTS, ORDERS, AND OTHER RECORDS, AND - TO ELECTRONIC DELIVERY OF NOTICES, POLICIES, AND RECORDS OF TRANSACTIONS INITIATED OR COMPLETED BY US OR - VIA THE SITE. You hereby waive any rights or requirements under any statutes, regulations, rules, - ordinances, or other laws in any jurisdiction which require an original signature or delivery or - retention of non-electronic records, or to payments or the granting of credits by any means other than - electronic means.
-

-

-
- -
- -
- - -
27.5. MARKETING - EMAILS
-
-
-
-

-
- - -
- By using our Site, you agree and are opting in to receiving periodic marketing and transactional - emails from us, including our - newsletter and weekly market and portfolio update emails. - You can opt out of receiving marketing emails from us by clicking on the unsubscribe link in the - bottom of the email. - -
-
-
-
-

-

-
- - -
- 28. CALIFORNIA - USERS AND RESIDENTS -
-

-
If any complaint - with us is not satisfactorily resolved, you can contact the Complaint - Assistance Unit of the Division of Consumer Services of the California - Department of Consumer Affairs in writing at 1625 North Market Blvd., Suite N - 112, Sacramento, California 95834 or by telephone at (800) 952-5210 or (916) - 445-1254.
-

-

-
- -
-
- 29. MISCELLANEOUS -
-

-
These Terms of Use and any policies or operating rules - posted by us on the Site or in respect to the Site constitute the entire agreement and understanding - between you and us. Our failure to exercise or enforce any right or provision of these Terms of Use - shall not operate as a waiver of such right or provision. These Terms of Use operate to the fullest - extent permissible by law. We may assign any or all of our rights and obligations to others at any time. - We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause - beyond our reasonable control. If any provision or part of a provision of these Terms of Use is - determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed - severable from these Terms of Use and does not affect the validity and enforceability of any remaining - provisions. There is no joint venture, partnership, employment or agency relationship created between - you and us as a result of these Terms of Use or use of the Site. You agree that these Terms of Use will - not be construed against us by virtue of having drafted them. You hereby waive any and all defenses you - may have based on the electronic form of these Terms of Use and the lack of signing by the parties - hereto to execute these Terms of Use.
-

-

-
- 30. CONTACT - US -
-

-
In order to resolve a complaint regarding the Site or to - receive further information regarding use of the Site, please contact us at:
-

- -
- help@manifold.markets -
-
-
- -
\ No newline at end of file