Typedefs | |
using | pcg32_2018_engine = pcg_engine< random_internal::pcg64_params< 0x5851f42d4c957f2dull, 0x14057b7ef767814full >, random_internal::pcg_xsh_rr_64_32 > |
using | pcg64_2018_engine = pcg_engine< random_internal::pcg128_params< 0x2360ed051fc65da4ull, 0x4385df649fccf645ull, 0x5851f42d4c957f2d, 0x14057b7ef767814f >, random_internal::pcg_xsl_rr_128_64 > |
template<typename A , typename B > | |
using | uniform_inferred_return_t = absl::enable_if_t< absl::disjunction< is_widening_convertible< A, B >, is_widening_convertible< B, A > >::value, typename std::conditional< is_widening_convertible< A, B >::value, B, A >::type > |
template<typename NumType > | |
using | UniformDistribution = typename std::conditional< IsIntegral< NumType >::value, absl::uniform_int_distribution< NumType >, absl::uniform_real_distribution< NumType > >::type |
Functions | |
double | beta (double p, double q) |
double | BetaIncomplete (const double x, const double p, const double q) |
double | BetaIncompleteInv (const double p, const double q, const double alpha) |
template<typename T > | |
int | BitWidth (T v) |
template<typename Iterator , typename Expected > | |
double | ChiSquare (Iterator it, Iterator end, Expected eit, Expected eend) |
double | ChiSquarePValue (double chi_square, int dof) |
double | ChiSquareValue (int dof, double p) |
template<typename Iterator > | |
double | ChiSquareWithExpected (Iterator begin, Iterator end, double expected) |
DistributionMoments | ComputeDistributionMoments (absl::Span< const double > data_points) |
bool | CPUSupportsRandenHwAes () |
double | erfinv (double x) |
template<typename RealType , typename SignedTag = GeneratePositiveTag, bool IncludeZero = true> | |
RealType | GenerateRealFromBits (uint64_t bits, int exp_bias=0) |
absl::optional< uint32_t > | GetSaltMaterial () |
bool | HasRandenHwAesImplementation () |
std::vector< std::pair< double, size_t > > | InitDiscreteDistribution (std::vector< double > *probabilities) |
template<typename UIntType > | |
constexpr UIntType | IntegerLog2 (UIntType n) |
int | IntLog2Ceil (uint64_t n) |
int | IntLog2Floor (uint64_t n) |
double | InverseNormalSurvival (double x) |
template<typename FloatType > | |
absl::enable_if_t< std::is_floating_point< FloatType >::value, bool > | is_uniform_range_valid (FloatType a, FloatType b) |
template<typename IntType > | |
absl::enable_if_t< IsIntegral< IntType >::value, bool > | is_uniform_range_valid (IntType a, IntType b) |
template<typename IntType > | |
absl::enable_if_t< std::is_integral< IntType >::value, bool > | is_uniform_range_valid (IntType a, IntType b) |
template<typename UIntType > | |
constexpr bool | IsPowerOfTwoOrZero (UIntType n) |
template<typename CharT , typename Traits > | |
istream_state_saver< std::basic_istream< CharT, Traits > > | make_istream_state_saver (std::basic_istream< CharT, Traits > &is, std::ios_base::fmtflags flags=std::ios_base::dec|std::ios_base::scientific|std::ios_base::skipws) |
template<typename T > | |
absl::enable_if_t<!std::is_base_of< std::ios_base, T >::value, null_state_saver< T > > | make_istream_state_saver (T &is, std::ios_base::fmtflags flags=std::ios_base::dec) |
template<typename CharT , typename Traits > | |
ostream_state_saver< std::basic_ostream< CharT, Traits > > | make_ostream_state_saver (std::basic_ostream< CharT, Traits > &os, std::ios_base::fmtflags flags=std::ios_base::dec|std::ios_base::left|std::ios_base::scientific) |
template<typename T > | |
absl::enable_if_t<!std::is_base_of< std::ios_base, T >::value, null_state_saver< T > > | make_ostream_state_saver (T &is, std::ios_base::fmtflags flags=std::ios_base::dec) |
template<typename SSeq , typename EnableIf = absl::enable_if_t<is_salted_seed_seq<SSeq>::value>> | |
SSeq | MakeSaltedSeedSeq (SSeq &&seq) |
template<typename SSeq , typename EnableIf = absl::enable_if_t<!is_salted_seed_seq<SSeq>::value>> | |
SaltedSeedSeq< typename std::decay< SSeq >::type > | MakeSaltedSeedSeq (SSeq &&seq) |
template<typename UIntType > | |
constexpr UIntType | MaskFromShift (size_t n) |
double | MaxErrorTolerance (double acceptance_probability) |
void | MixIntoSeedMaterial (absl::Span< const uint32_t > sequence, absl::Span< uint32_t > seed_material) |
U256 | MultiplyU128ToU256 (uint128 a, uint128 b) |
absl::uint128 | MultiplyU64ToU128 (uint64_t a, uint64_t b) |
bool | Near (absl::string_view msg, double actual, double expected, double bound) |
template<typename URBG > | |
constexpr size_t | NumBits () |
template<typename T > | |
constexpr bool | operator!= (TagTypeCompare< T >, TagTypeCompare< T >) |
std::ostream & | operator<< (std::ostream &os, const DistributionMoments &moments) |
template<typename T > | |
constexpr bool | operator== (TagTypeCompare< T >, TagTypeCompare< T >) |
template<typename URBG > | |
constexpr URBG::result_type | RangeSize () |
template<typename FloatType , typename IStream > | |
FloatType | read_floating_point (IStream &is) |
bool | ReadSeedMaterialFromOSEntropy (absl::Span< uint32_t > values) |
template<typename URBG > | |
ABSL_MUST_USE_RESULT bool | ReadSeedMaterialFromURBG (URBG *urbg, absl::Span< uint32_t > values) |
double | RequiredSuccessProbability (const double p_fail, const int num_trials) |
constexpr size_t | SeedBitsToBlocks (size_t seed_size) |
double | StirlingLogFactorial (double n) |
void | ThrowSeedGenException () |
template<typename FloatType , typename Tag > | |
absl::enable_if_t< absl::conjunction< std::is_floating_point< FloatType >, absl::disjunction< std::is_same< Tag, IntervalOpenClosedTag >, std::is_same< Tag, IntervalOpenOpenTag > > >::value, FloatType > | uniform_lower_bound (Tag, FloatType a, FloatType b) |
template<typename IntType , typename Tag > | |
absl::enable_if_t< absl::conjunction< std::is_integral< IntType >, absl::disjunction< std::is_same< Tag, IntervalOpenClosedTag >, std::is_same< Tag, IntervalOpenOpenTag > > >::value, IntType > | uniform_lower_bound (Tag, IntType a, IntType) |
template<typename IntType , typename Tag > | |
absl::enable_if_t< absl::conjunction< IsIntegral< IntType >, absl::disjunction< std::is_same< Tag, IntervalOpenClosedTag >, std::is_same< Tag, IntervalOpenOpenTag > > >::value, IntType > | uniform_lower_bound (Tag, IntType a, IntType) |
template<typename NumType , typename Tag > | |
absl::enable_if_t< absl::disjunction< std::is_same< Tag, IntervalClosedClosedTag >, std::is_same< Tag, IntervalClosedOpenTag > >::value, NumType > | uniform_lower_bound (Tag, NumType a, NumType) |
template<typename FloatType , typename Tag > | |
absl::enable_if_t< absl::conjunction< std::is_floating_point< FloatType >, absl::disjunction< std::is_same< Tag, IntervalClosedOpenTag >, std::is_same< Tag, IntervalOpenOpenTag > > >::value, FloatType > | uniform_upper_bound (Tag, FloatType, FloatType b) |
template<typename FloatType , typename Tag > | |
absl::enable_if_t< absl::conjunction< std::is_floating_point< FloatType >, absl::disjunction< std::is_same< Tag, IntervalClosedClosedTag >, std::is_same< Tag, IntervalOpenClosedTag > > >::value, FloatType > | uniform_upper_bound (Tag, FloatType, FloatType b) |
template<typename IntType , typename Tag > | |
absl::enable_if_t< absl::conjunction< std::is_integral< IntType >, absl::disjunction< std::is_same< Tag, IntervalClosedOpenTag >, std::is_same< Tag, IntervalOpenOpenTag > > >::value, IntType > | uniform_upper_bound (Tag, IntType, IntType b) |
template<typename IntType , typename Tag > | |
absl::enable_if_t< absl::conjunction< IsIntegral< IntType >, absl::disjunction< std::is_same< Tag, IntervalClosedOpenTag >, std::is_same< Tag, IntervalOpenOpenTag > > >::value, IntType > | uniform_upper_bound (Tag, IntType, IntType b) |
template<typename IntType , typename Tag > | |
absl::enable_if_t< absl::conjunction< IsIntegral< IntType >, absl::disjunction< std::is_same< Tag, IntervalClosedClosedTag >, std::is_same< Tag, IntervalOpenClosedTag > > >::value, IntType > | uniform_upper_bound (Tag, IntType, IntType b) |
template<typename IntType , typename Tag > | |
absl::enable_if_t< absl::conjunction< std::is_integral< IntType >, absl::disjunction< std::is_same< Tag, IntervalClosedClosedTag >, std::is_same< Tag, IntervalOpenClosedTag > > >::value, IntType > | uniform_upper_bound (Tag, IntType, IntType b) |
double | ZScore (double expected_mean, const DistributionMoments &moments) |
Variables | |
constexpr const char | kChiSquared [] = "chi-squared" |
constexpr size_t | kEntropyBitsNeeded = 256 |
constexpr size_t | kEntropyBlocksNeeded |
const unsigned char | kRandenRoundKeys [kKeyBytes] |
const unsigned char | kRandenRoundKeysBE [kKeyBytes] |
typedef pcg_engine< random_internal::pcg64_params< 0x5851f42d4c957f2dull, 0x14057b7ef767814full >, random_internal::pcg_xsh_rr_64_32 > absl::random_internal::pcg32_2018_engine |
Definition at line 302 of file abseil-cpp/absl/random/internal/pcg_engine.h.
typedef pcg_engine< random_internal::pcg128_params< 0x2360ed051fc65da4ull, 0x4385df649fccf645ull, 0x5851f42d4c957f2d, 0x14057b7ef767814f >, random_internal::pcg_xsl_rr_128_64 > absl::random_internal::pcg64_2018_engine |
Definition at line 296 of file abseil-cpp/absl/random/internal/pcg_engine.h.
using absl::random_internal::uniform_inferred_return_t = typedef absl::enable_if_t<absl::disjunction<is_widening_convertible<A, B>, is_widening_convertible<B, A> >::value, typename std::conditional< is_widening_convertible<A, B>::value, B, A>::type> |
Definition at line 82 of file abseil-cpp/absl/random/internal/uniform_helper.h.
using absl::random_internal::UniformDistribution = typedef typename std::conditional<std::is_integral<NumType>::value, absl::uniform_int_distribution<NumType>, absl::uniform_real_distribution<NumType> >::type |
Definition at line 215 of file abseil-cpp/absl/random/internal/uniform_helper.h.
double absl::random_internal::beta | ( | double | p, |
double | q | ||
) |
Definition at line 102 of file abseil-cpp/absl/random/internal/distribution_test_util.cc.
Definition at line 367 of file abseil-cpp/absl/random/internal/distribution_test_util.cc.
double absl::random_internal::BetaIncompleteInv | ( | const double | p, |
const double | q, | ||
const double | alpha | ||
) |
Definition at line 380 of file abseil-cpp/absl/random/internal/distribution_test_util.cc.
Definition at line 133 of file abseil-cpp/absl/random/internal/traits.h.
double absl::random_internal::ChiSquare | ( | Iterator | it, |
Iterator | end, | ||
Expected | eit, | ||
Expected | eend | ||
) |
Definition at line 56 of file abseil-cpp/absl/random/internal/chi_square.h.
double absl::random_internal::ChiSquarePValue | ( | double | chi_square, |
int | dof | ||
) |
Definition at line 157 of file abseil-cpp/absl/random/internal/chi_square.cc.
double absl::random_internal::ChiSquareValue | ( | int | dof, |
double | p | ||
) |
Definition at line 106 of file abseil-cpp/absl/random/internal/chi_square.cc.
double absl::random_internal::ChiSquareWithExpected | ( | Iterator | begin, |
Iterator | end, | ||
double | expected | ||
) |
Definition at line 40 of file abseil-cpp/absl/random/internal/chi_square.h.
DistributionMoments absl::random_internal::ComputeDistributionMoments | ( | absl::Span< const double > | data_points | ) |
Definition at line 39 of file abseil-cpp/absl/random/internal/distribution_test_util.cc.
bool absl::random_internal::CPUSupportsRandenHwAes | ( | ) |
Definition at line 131 of file abseil-cpp/absl/random/internal/randen_detect.cc.
double absl::random_internal::erfinv | ( | double | x | ) |
Definition at line 110 of file abseil-cpp/absl/random/internal/distribution_test_util.cc.
|
inline |
Definition at line 70 of file abseil-cpp/absl/random/internal/generate_real.h.
absl::optional< uint32_t > absl::random_internal::GetSaltMaterial | ( | ) |
Definition at line 248 of file abseil-cpp/absl/random/internal/seed_material.cc.
bool absl::random_internal::HasRandenHwAesImplementation | ( | ) |
Definition at line 54 of file abseil-cpp/absl/random/internal/randen_hwaes.cc.
std::vector< std::pair< double, size_t > > absl::random_internal::InitDiscreteDistribution | ( | std::vector< double > * | probabilities | ) |
Definition at line 23 of file abseil-cpp/absl/random/discrete_distribution.cc.
|
constexpr |
Definition at line 52 of file abseil-cpp/absl/random/internal/fast_uniform_bits.h.
Definition at line 39 of file abseil-cpp/absl/random/internal/fastmath.h.
Definition at line 36 of file abseil-cpp/absl/random/internal/fastmath.h.
double absl::random_internal::InverseNormalSurvival | ( | double | x | ) |
Definition at line 80 of file abseil-cpp/absl/random/internal/distribution_test_util.cc.
absl::enable_if_t< std::is_floating_point< FloatType >::value, bool > absl::random_internal::is_uniform_range_valid | ( | FloatType | a, |
FloatType | b | ||
) |
Definition at line 199 of file abseil-cpp/absl/random/internal/uniform_helper.h.
absl::enable_if_t<IsIntegral<IntType>::value, bool> absl::random_internal::is_uniform_range_valid | ( | IntType | a, |
IntType | b | ||
) |
Definition at line 205 of file abseil-cpp/absl/random/internal/uniform_helper.h.
absl::enable_if_t<std::is_integral<IntType>::value, bool> absl::random_internal::is_uniform_range_valid | ( | IntType | a, |
IntType | b | ||
) |
Definition at line 205 of file bloaty/third_party/abseil-cpp/absl/random/internal/uniform_helper.h.
|
constexpr |
Definition at line 33 of file abseil-cpp/absl/random/internal/fast_uniform_bits.h.
istream_state_saver< std::basic_istream< CharT, Traits > > absl::random_internal::make_istream_state_saver | ( | std::basic_istream< CharT, Traits > & | is, |
std::ios_base::fmtflags | flags = std::ios_base::dec | std::ios_base::scientific | std::ios_base::skipws |
||
) |
Definition at line 149 of file abseil-cpp/absl/random/internal/iostream_state_saver.h.
absl::enable_if_t<!std::is_base_of< std::ios_base, T >::value, null_state_saver< T > > absl::random_internal::make_istream_state_saver | ( | T & | is, |
std::ios_base::fmtflags | flags = std::ios_base::dec |
||
) |
Definition at line 161 of file abseil-cpp/absl/random/internal/iostream_state_saver.h.
ostream_state_saver< std::basic_ostream< CharT, Traits > > absl::random_internal::make_ostream_state_saver | ( | std::basic_ostream< CharT, Traits > & | os, |
std::ios_base::fmtflags | flags = std::ios_base::dec | std::ios_base::left | std::ios_base::scientific |
||
) |
Definition at line 82 of file abseil-cpp/absl/random/internal/iostream_state_saver.h.
absl::enable_if_t<!std::is_base_of< std::ios_base, T >::value, null_state_saver< T > > absl::random_internal::make_ostream_state_saver | ( | T & | is, |
std::ios_base::fmtflags | flags = std::ios_base::dec |
||
) |
Definition at line 96 of file abseil-cpp/absl/random/internal/iostream_state_saver.h.
SSeq absl::random_internal::MakeSaltedSeedSeq | ( | SSeq && | seq | ) |
Definition at line 145 of file abseil-cpp/absl/random/internal/salted_seed_seq.h.
SaltedSeedSeq< typename std::decay< SSeq >::type > absl::random_internal::MakeSaltedSeedSeq | ( | SSeq && | seq | ) |
Definition at line 152 of file abseil-cpp/absl/random/internal/salted_seed_seq.h.
|
constexpr |
Definition at line 68 of file abseil-cpp/absl/random/internal/fast_uniform_bits.h.
double absl::random_internal::MaxErrorTolerance | ( | double | acceptance_probability | ) |
Definition at line 409 of file abseil-cpp/absl/random/internal/distribution_test_util.cc.
void absl::random_internal::MixIntoSeedMaterial | ( | absl::Span< const uint32_t > | sequence, |
absl::Span< uint32_t > | seed_material | ||
) |
Definition at line 216 of file abseil-cpp/absl/random/internal/seed_material.cc.
Definition at line 58 of file abseil-cpp/absl/random/internal/wide_multiply.h.
|
inline |
Definition at line 41 of file bloaty/third_party/abseil-cpp/absl/random/internal/wide_multiply.h.
bool absl::random_internal::Near | ( | absl::string_view | msg, |
double | actual, | ||
double | expected, | ||
double | bound | ||
) |
Definition at line 86 of file abseil-cpp/absl/random/internal/distribution_test_util.cc.
|
constexpr |
Definition at line 59 of file abseil-cpp/absl/random/internal/fast_uniform_bits.h.
|
constexpr |
Definition at line 48 of file abseil-cpp/absl/random/internal/uniform_helper.h.
std::ostream & absl::random_internal::operator<< | ( | std::ostream & | os, |
const DistributionMoments & | moments | ||
) |
Definition at line 74 of file abseil-cpp/absl/random/internal/distribution_test_util.cc.
|
constexpr |
Definition at line 43 of file abseil-cpp/absl/random/internal/uniform_helper.h.
|
constexpr |
Definition at line 41 of file abseil-cpp/absl/random/internal/fast_uniform_bits.h.
|
inline |
Definition at line 222 of file abseil-cpp/absl/random/internal/iostream_state_saver.h.
ABSL_MUST_USE_RESULT bool absl::random_internal::ReadSeedMaterialFromOSEntropy | ( | absl::Span< uint32_t > | values | ) |
Definition at line 205 of file abseil-cpp/absl/random/internal/seed_material.cc.
ABSL_MUST_USE_RESULT bool absl::random_internal::ReadSeedMaterialFromURBG | ( | URBG * | urbg, |
absl::Span< uint32_t > | values | ||
) |
Definition at line 68 of file abseil-cpp/absl/random/internal/seed_material.h.
double absl::random_internal::RequiredSuccessProbability | ( | const double | p_fail, |
const int | num_trials | ||
) |
Definition at line 397 of file abseil-cpp/absl/random/internal/distribution_test_util.cc.
|
constexpr |
Definition at line 35 of file abseil-cpp/absl/random/internal/seed_material.h.
|
inline |
Definition at line 43 of file abseil-cpp/absl/random/internal/fastmath.h.
void absl::random_internal::ThrowSeedGenException | ( | ) |
Definition at line 35 of file abseil-cpp/absl/random/seed_gen_exception.cc.
absl::enable_if_t< absl::conjunction< std::is_floating_point< FloatType >, absl::disjunction< std::is_same< Tag, IntervalOpenClosedTag >, std::is_same< Tag, IntervalOpenOpenTag > > >::value, FloatType > absl::random_internal::uniform_lower_bound | ( | Tag | , |
FloatType | a, | ||
FloatType | b | ||
) |
Definition at line 118 of file abseil-cpp/absl/random/internal/uniform_helper.h.
absl::enable_if_t< absl::conjunction< std::is_integral<IntType>, absl::disjunction<std::is_same<Tag, IntervalOpenClosedTag>, std::is_same<Tag, IntervalOpenOpenTag> > >::value, IntType> absl::random_internal::uniform_lower_bound | ( | Tag | , |
IntType | a, | ||
IntType | |||
) |
Definition at line 107 of file bloaty/third_party/abseil-cpp/absl/random/internal/uniform_helper.h.
absl::enable_if_t< absl::conjunction< IsIntegral<IntType>, absl::disjunction<std::is_same<Tag, IntervalOpenClosedTag>, std::is_same<Tag, IntervalOpenOpenTag> > >::value, IntType> absl::random_internal::uniform_lower_bound | ( | Tag | , |
IntType | a, | ||
IntType | |||
) |
Definition at line 107 of file abseil-cpp/absl/random/internal/uniform_helper.h.
absl::enable_if_t< absl::disjunction< std::is_same< Tag, IntervalClosedClosedTag >, std::is_same< Tag, IntervalClosedOpenTag > >::value, NumType > absl::random_internal::uniform_lower_bound | ( | Tag | , |
NumType | a, | ||
NumType | |||
) |
Definition at line 127 of file abseil-cpp/absl/random/internal/uniform_helper.h.
absl::enable_if_t< absl::conjunction< std::is_floating_point< FloatType >, absl::disjunction< std::is_same< Tag, IntervalClosedOpenTag >, std::is_same< Tag, IntervalOpenOpenTag > > >::value, FloatType > absl::random_internal::uniform_upper_bound | ( | Tag | , |
FloatType | , | ||
FloatType | b | ||
) |
Definition at line 149 of file abseil-cpp/absl/random/internal/uniform_helper.h.
absl::enable_if_t< absl::conjunction< std::is_floating_point< FloatType >, absl::disjunction< std::is_same< Tag, IntervalClosedClosedTag >, std::is_same< Tag, IntervalOpenClosedTag > > >::value, FloatType > absl::random_internal::uniform_upper_bound | ( | Tag | , |
FloatType | , | ||
FloatType | b | ||
) |
Definition at line 171 of file abseil-cpp/absl/random/internal/uniform_helper.h.
absl::enable_if_t< absl::conjunction< std::is_integral<IntType>, absl::disjunction<std::is_same<Tag, IntervalClosedOpenTag>, std::is_same<Tag, IntervalOpenOpenTag> > >::value, IntType> absl::random_internal::uniform_upper_bound | ( | Tag | , |
IntType | , | ||
IntType | b | ||
) |
Definition at line 138 of file bloaty/third_party/abseil-cpp/absl/random/internal/uniform_helper.h.
absl::enable_if_t< absl::conjunction< IsIntegral<IntType>, absl::disjunction<std::is_same<Tag, IntervalClosedOpenTag>, std::is_same<Tag, IntervalOpenOpenTag> > >::value, IntType> absl::random_internal::uniform_upper_bound | ( | Tag | , |
IntType | , | ||
IntType | b | ||
) |
Definition at line 138 of file abseil-cpp/absl/random/internal/uniform_helper.h.
absl::enable_if_t< absl::conjunction< IsIntegral<IntType>, absl::disjunction<std::is_same<Tag, IntervalClosedClosedTag>, std::is_same<Tag, IntervalOpenClosedTag> > >::value, IntType> absl::random_internal::uniform_upper_bound | ( | Tag | , |
IntType | , | ||
IntType | b | ||
) |
Definition at line 160 of file abseil-cpp/absl/random/internal/uniform_helper.h.
absl::enable_if_t< absl::conjunction< std::is_integral<IntType>, absl::disjunction<std::is_same<Tag, IntervalClosedClosedTag>, std::is_same<Tag, IntervalOpenClosedTag> > >::value, IntType> absl::random_internal::uniform_upper_bound | ( | Tag | , |
IntType | , | ||
IntType | b | ||
) |
Definition at line 160 of file bloaty/third_party/abseil-cpp/absl/random/internal/uniform_helper.h.
double absl::random_internal::ZScore | ( | double | expected_mean, |
const DistributionMoments & | moments | ||
) |
Definition at line 403 of file abseil-cpp/absl/random/internal/distribution_test_util.cc.
|
constexpr |
Definition at line 35 of file abseil-cpp/absl/random/internal/chi_square.h.
|
constexpr |
Definition at line 41 of file abseil-cpp/absl/random/internal/seed_material.h.
|
constexpr |
Definition at line 45 of file abseil-cpp/absl/random/internal/seed_material.h.
const unsigned char absl::random_internal::kRandenRoundKeys |
Definition at line 275 of file abseil-cpp/absl/random/internal/randen_round_keys.cc.
const unsigned char absl::random_internal::kRandenRoundKeysBE |
Definition at line 90 of file abseil-cpp/absl/random/internal/randen_round_keys.cc.